Advices on being a competitive professional

I run into the following list of advices in a Reddit thread. The post was posted by @visakanv, so head up for his site for more interesting staff.
The post is here as a self reminder for me, but also an amazing group of advices for everyone else.

Identify and focus on your top priorities – because if you don’t, wtf are you doing?

Is the top priority the top priority? What’s the single most important thing you need to be doing? If you don’t have an answer to this, you should drop everything and figure out what the answer is. Having an answer here forces clarity and focus. Not having an answer is dangerous – it guarantees that you’ll be working on unimportant things and wasting your precious time.

There will always be an endless stream of things to do. It’ll be tempting to do whatever is easiest, or most fun, or most familiar. But this is a trap that will screw you over in the long run. It’s better to make 5-10% progress on the most important thing than to finish lots of tasks that don’t actually move the needle.

What are you accountable for? Everybody in an organization should own something. Ideally, it should be a metric that is tied to your top priority. If it isn’t, you should discuss it with your manager or boss and establish what your top priority really is. Once you’ve settled on a metric (and you usually need to have some sort of counter-balancing metric, to try and mitigate the problem of perverse incentives), you’ll want to make sure that you know as much as possible about how to make a positive dent in this metric.

Dominate your area of responsibility. You want to be really good at the thing that you’re supposed to be handling. Sounds kinda obvious, but sometimes it can be tempting to try to do a bunch of secondary things. Go back to point 1 – keep the main thing the main thing.

Make your goals and targets precise. If things are vague or ambiguous, set aside time to make them precise. Don’t work with ambiguous plans – it’s a recipe for distraction and scope creep. Learn to identify vagueness in your own thinking, writing and communications, and weed it out.

Manage yourself like an important, valuable resource – because you are

“The first principle is that you must not fool yourself and you are the easiest person to fool.” – Richard Feynman

Be honest about what you don’t know. Be honest with yourself, most importantly. The clearer you are about this, the better positioned you will be to learn and improve. As a bonus, you’ll find that being intellectually honest in a candid way encourages people to be honest with you in turn. It just makes for a healthy atmosphere. Practice communicating your uncertainty in a constructive, inviting way. It’s refreshing to be around people like that.

Have a schedule and respect it. I hated calendars and timetables as a kid, and spent many years dealing with subconscious stress of having to deal with any sort of deadline. But truths are true whether we like them or not: We have limited time and an unlimited set of things to do. In the absence of good routines, we fall into bad ones. If you’re not deciding in advance how you’re going to spend your time and energy, then other things will decide for you – the urgency of an interruption from somebody, the ease of an unimportant task. This compounds.

After years of reflection and oscillation, I came to realize that my issue wasn’t with schedules per se – it was with being forced to do things that I didn’t want to do. I just subconsciously had a negative association with calendars, due dates and so on. If you’re like me, this takes a lot of work to undo. Start by making really small, simple plans and then get them done. Write down something that you can do in 5 minutes, then do it, and scratch it off. Do this over and over and get better at it, and add more time. It gets more complex as it gets larger, like a video game. It’s actually quite interesting and exciting once you reframe it this way. You learn a lot more about yourself and the world around you.

Take time off. You are a resource and you need to recharge. Don’t burn out. Think long term. When I started working, I felt like I was given an opportunity I didn’t deserve. I didn’t feel qualified. I felt like I was always behind on my work. So I kept deferring and postponing when I’d eventually take a vacation. On retrospect, this was a hilariously bad idea, and I regret it. I would have been happier, healthier, and have gotten much more done if I simply bit the bullet and scheduled my time off in advance.

Reflect and review on your past work. Analyze your past work to figure out what worked, what didn’t, what went well, what didn’t… you should be doing this regularly, on your own. I’ve always been a little bit sloppy with this – I don’t always take notes, and when I do, I don’t always review them. If I could start over again, I would work to be more systematic and disciplined about this.( I’m writing this blogpost now because I was reviewing my 1-1 doc.)

Articulate your processes. This is helpful at multiple levels. First of all, simply taking something out of your brain and putting it on paper is an incredibly useful habit. It forces you to figure out what you really mean. What are you trying to achieve? How do you make decisions? When you articulate your processes, you can analyze them. You can look for weak points and improve them. It’s like watching a replay of yourself. You can share your processes with others, and get feedback.

You are in charge of yourself. Even if you have great managers, you ultimately need to take responsibility for your own learning, your own execution, your own growth. Looking back, I think I spent most of my first 3-4 years in a sort of reactive mode (rather than proactive). I did have great managers who gave me lots of great targets, advice, context, structure and so on. And maybe they even spoiled me a little, because it took me a few years to think, “Well, damn, I gotta set loftier goals for myself, and meet them.” Unless you have a crazy boss or manager, nobody is going to push you as hard as you can push yourself. (I don’t mean overwork yourself in terms of number of hours, I mean challenge yourself in terms of pushing yourself out of your comfort zone. Trying new things, learning new things that are outside your immediate job scope, etc.)

Set aside time for learning. When you find good content about your field, bookmark it for later, and go through it at a regular interval. Weekly is pretty good. If you’re doing a bunch of reading and learning, share your findings with someone else. This helps you understand. Implement your learnings. Set monthly and quarterly goals.

Always take pains to communicate effectively – your impact on your team members is highly consequential

Communicate early, communicate often. In my earlier days, I was often self-conscious and trying to figure out everything by myself. If I owed somebody something, I tried to figure out everything and get it all done first before passing it on. If I ran into any difficulties, I would either go a little nuts, or I’d procrastinate until I didn’t have much time left, and then get it done in a panic. Show your work. Share your sketches and drafts. You need to build trust and rapport with your team so you can feel comfortable doing this. Early-stage feedback is much more useful and actionable than late-stage feedback. Sometimes simply asking a few questions or chatting about something in an open-ended way can lead to superior ideas and solutions that you didn’t expect.

Ask clarifying questions. Everything is vague to a degree you don’t realize. So make an effort to make things precise. Being clear about exactly what is expected is very important. People having different expectations, different understandings of a situation, interpreting vague instructions differently, etc – all of these are sources of lots of friction and frustration. So it’s worth spending a lot of time and energy making sure everyone is aligned on whatever you’re doing.

Lean on your team; ask for help. Real life isn’t a closed-book examination, where you have to get everything done right yourself, in isolation. Ask for help if you need it. This may vary a little depending on your company culture and personality. Some people might be intrusive and demanding. But I generally get the sense that smart, respectful people tend to err on the side of caution – not wanting to interrupt others. That said, when you ask for help, be simple and clear about it. “Hey, when you have a moment – I need some fresh eyes to look at my slides for a few minutes and offer copy suggestions”. Don’t interrupt people with open-ended non-requests, that’s disrespectful. Give people a very clear ask, and sometimes they’ll even be grateful for the brief distraction + chance to help move something along.

Be encouraging and supportive. It makes a difference. It can make all the difference.

Always Be Peopling – organizations and industries are made of people; build relationships with them

Always be networking. It’s easy to fall into a pattern of thinking that you need to focus on whatever’s in front of your face. There’s always going to be more work to do. You need to be able to zoom in and out. Meet people who are in similar roles as you, doing work similar to what you’re doing. This will help you do your job better. And it’s also quite pleasurable and heartening in its own right, for its own sake. ** People know things.** They will tell you things in person that they won’t ever write in a blogpost or post online – and these will be some of the most powerful, useful things for you to know. They can open doors for you. They can set things up for you. Sometimes the problem you’ve been struggling with for weeks or months has a simple solution, and that solution happens to be inside somebody’s head – that you can access for the cost of a beer or coffee.

Have a pipeline for hiring. Even if you aren’t responsible for hiring decisions. Make a list of people you’d like to work with and learn from. It makes sense to build relationships with people for the long haul. It’s good to know good people even if you aren’t necessarily going to make a career in any particular industry.

Practice speaking, give talks, presentations, etc. Communicating what you know with other people is a powerful skill. It will make you a better professional. And you’ll feel lighter at work, too, because the act of teaching and sharing makes you more comfortable and confident in your area of expertise.

Miscellaneous thoughts

Identify your constraints. Is it money? Is it ideas? Is it execution? Is it time? What’s stopping you from making 2x, 5x, 10x the impact you are currently achieving?

Thought experiments can be really useful. What if you had more resources to spend? What would you do with an additional $500 a week to spend? $1,000? $2,000? $5,000? What if you had to start over from scratch, what would you do differently? What if you could only work for half the number of hours you currently work? What are the opportunity costs of what you’re doing? What would happen if you did the complete opposite of whatever you’re doing?

Positioning exercises are useful in marketing. In many ways, marketing is all about positioning. Why should anybody buy this product instead of anything else (or nothing at all)? Why should anybody care about some particular piece of content? Why should anybody hire you? What do you, your content, your skills, etc bring to the table?

Study job postings. I avoided doing this for a long time, because I love where I am and it felt a little bit scandalous to even entertain the thought. But it’s very useful to know what the job market is looking for. You can plan a career this way. Look up the job descriptions of roles senior to your own, and ask yourself what you can or cannot do. And then build out those skill-sets. Protip: This is also precisely how you work yourself into promotions and raises.

Take ownership. Make it easy for your boss to say yes. Every boss fantasizes about having an employee that just shows up and gets things done without having to be told or micromanaged. Once you’re both clear about your priorities, goals and targets, figure out a plan and get it done. Your boss hired you to do a job, she doesn’t want to have to go over every single decision with you (though a good boss will do this for a while – teach a man to fish, etc). Do the thinking for her, and give her easy decisions to say yes to. (Eg: “We are currently paying A freelancers $B to get content that gives us C traffic, which leads to D signups. If we doubled down on A1, we would get more signups for less cost.”)

Move fast; go all the way through. I find myself thinking about writing and music. Ray Bradbury had a quote about how a writer “should be a thing of fevers and enthusiasms.” Orchestra conductor Benjamin Zander has a similar point about how musicians should “stop thinking about every single note along the way, and start thinking about the long, long line from (start to finish).” I’ve grown to believe that this is true for all sorts of work.

Take care of your mental and emotional health. Your work is going to fill a large part of your life, so it’s a good idea to do it well, to take it seriously, to enjoy it, to challenge yourself and so on. But if you find yourself getting burnt out, depressed and so on, don’t lie to yourself about it. You are the most important person in your life; take care of yourself.

.AL Domain Hack Sales – VOK.AL to be the new domain for Startup GetVokAl, an accredited registrar for .al domains informed that the domain VOK.AL was sold for 1000 US$.

Although the name of the buyer was not been made public initially, the domain seems to be the main brand for the Start-up GETVOKAL. (GET)VOK.AL is an audio social network for creating, sharing and discovering entertaining, hilarious Vokes (audio clips). Normally the users can signup to create “vokes” of up to 1 minute in length
edit, add special effects in real time. The vokes can be posted privately or publicly.

VOK.AL has headquarters in Bengaluru, Karnataka India. Their crunchbase page indicates that they have raised funds from some prominent investors such as Accel Partners or Blume Partners.

The sale indicates that .al domain hacks still have traction.
What are domain hacks!?.
The similar VOC.AL domain was sold for 5000 US$ few years back. Also related DIGIT.AL sold for 5500€

Skype for Linux behind a proxy server

Can I connect to Skype through a proxy server?

This might seem as a question with a simple answer, but in the Skype For Linux (ß-version), there seems to be no Network menu. I spent some time trying to understand why and how to alter the network configurations in the Skype for Linux (in my case tried with Ubuntu 16.4) and apparently nothing worked.
I had all the environment variables set correctly but Skype was not fetching them.
If you need to run Skype behind a corporate proxy, there you need to alter the script which invokes Skype and inject your proxy info in there.
By typing a $which skypeforlinux in your command line, you may find out something like: /usr/bin/skypeforlinux
If this does not exist, you may create it.

This is a bash script that calls the compiled ‘skypeforlinux’ program.
Just before the invocation of the executable program, you need to add an export and a proxy reference for http & https:


SCRIPT=$(readlink -f "$0")
USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)


mkdir -p $SKYPE_LOGS
export http_proxy='proxy.server:8888' &&
export https_proxy='proxy.server:8888' &&
nohup "$SKYPE_PATH" --executed-from="$(pwd)" --pid=$$ "[email protected]" > "$SKYPE_LOGS/skype-startup.log" 2>&1 &

How to remove stop words from a document or a bundle of documents

Although there are different ways of removing stop words from a document (or a bundle of documents), an easy way is to do so with the NLTK (Natural Language Toolkit) on Python.
You can use the stopwords lists from NLTK and the build in functionality to do the work.
A simple example would be:
>>> from nltk import word_tokenize
>>> from nltk.corpus import stopwords
>>> import string
>>> sent = "this is a message containing stopwords."
>>> stop = stopwords.words('english') + string.punctuation
>>> [i for i in word_tokenize(sent.lower()) if i not in stop]
['message', 'containing', 'stopwords']

In case you have specific stopwords that you would like to omit, you can always create a set and exclude it from the stopword list.
operators= set(('and','not'))
stop = set(stopwords.('english'))- operators

The condition would be as above:
if i not in stop :
# use word

Grails 2 End of Life (EOL)

There is no information Grails End of Life or even End of Support for the matter. While Grails 2 (and 1) were developed with the support of Pivotal, Grails is being further developed in Branch 3.

Considering that the switch from Grails 2 to Grails 3 is not trivial, we were wondering if one should take the burden of the upgrade, or leave projects in 2.x branch for some more years.

It all depends on the commitment and the plans of the Grails team. Reading through the documents of Grails, you cannot find any foreseen EOL information for any of the projects.

In Tweeter thought, there was this conversation with the Grails Framework.

The answer of Grails team indicates that Grails 2.x will continue to be support for critical issues (such as security flaws). There is no ETA or deadline for the End of Life Support and that is a pitty.

After reviewing the tweet, we decided that projects that we have on 2.5.x branch will not be upgraded in the near future. Seems Grails Team will support on the long run security concerns. Grails 3 offers some nice features, therefore if a project is relatively with not so many plugins, an upgrade might be worth the trouble.

DATALHUB a digital data repository and an alternative to CKAN

This user guide covers using DATALHUB’s web interface to organize, publish and find datasets and digital assets.

Datasets and resources

The DATALHUB is oriented toward the concept of a Dataset *and a *Datum.
A Dataset is a (digital) Data Container. This may be a structure that describes and provides some metadata on digital assets. As an example, the dataset of the budget of a country is contained in a Dataset. The dataset provides general information (metadata) on the provenance of the information, licencing and authorship. Digital assets (datum) such as factual budget, approved budget are related to the Dataset and made available for download. Each digital asset has additionl technical metadata.
A Datum entity is a digital asset, or in a simple language, a file.
Datum or a Digital Asset in DATALHUB


Please refer to the Installation guide for the creation of the first user in Datalhub

Administration Section

Upon succesful login on the page, a mini-flyout administration section will be shown behind a Gear Icon on the right side of the screen.

Datalhub - Administration menu behind the Gear Icon

Clicking the Gear Icon will bring a simple menu that points to the group of elements that you are able to alter with the permissions you are granted.

Generally these elements are:

  • Dataset
  • Organisation
  • Category
  • License
  • Partners
  • (User) Profile

Adding a new dataset

Clicking on Dataset from the Administration menu, will lead to a page showing a list of all the existing datasets. From the list of the datasets, one can select a dataset to be shown a form for the editing of the selected dataset.

The form is also the same and self-explanatory. Important is the ability to ingest digital assets in parallell. Through the same form, the users of the website can upload a large number of digital assets in parallel. Technical metadata for these assets are created on the fly.

DATALHUB will ask for the following information about each dataset.

  • Title – A title describing the dataset.
  • Description – A free form section describing the dataset.
  • Organization – Relates a dataset to an organization. Normally this will point to the organisation that issued or contributed to the creation of the digital dataset.
  • Author – Indicates the creator of the dataset in the DATALHUB.
  • Maintainer – Refers to a person or organisation that maintains and takes care of the dataset. This is a free text field.
  • Created & Revision – Are date references that point each operation to a specific timeline
  • Lineage – is a free text field that should be used to point to prior datasets that are extended in the current dataset. This is a classical provenance reference.
  • Category – pins the current dataset to a specific category, or topic of interest. The category has to be selected from a drop down which is populated by categories defined in the Categories Section.
  • Update Frequency – Will probably be never used, or filled with never in most of the cases
  • Tags – Are yet another word for keywords that best describe the dataset being uploaded. Examples could be “health”, “North Albania” etc.
  • License – it is important to include license information so that people know how they can use the data. This field is a drop-down box.

Adding Organisations, Categories, Licenses

A Dataset contains references to list of predefined entities in the groups of organisations, categories and licences. The predefined entities can be ammended at any time through a similar modification menu. Clicking on the link for each of these entites in the Administration Fly-out menu will lead to respective sections where you can create, edit or remove (if not referenced) instances of each of these entities.


Search is based on a AngularJS faceted search. This will behave well up to a dozen thousands of dataset records. A faceted search, that will have no problem of handling millions of records based on a document index is planned, although work has not started.


This section documents DATALHUB’s API, for developers who want to write code that interacts with DATALHUB sites and their data. The following are a set of operations you can handle through the API
Get JSON-formatted lists of a site’s datasets:


GET JSON/XML formatted list of a specific dataset


The default response is JSON, but you can easily switch to XML by appending .xml by the end of the call.


GET JSON/XML formatted metadata for a specific digital asset


The list of the digital assets is provided in the retrieval of a dataset. The get datum call returns the metadata for a digital data. The download path for a specific digital asset is: http://$DOMAIN/download/download?datumId=$datumID&datasetId=$datasetID

API calls for creation, upload, update of Datasets and Digital Assets is not active at this stage. If you would like to use this application and need these calls, drop me a line.

Drupal is Horrible – Drupal REVIEW and Criticism

These are a few points written in frustration, so please understand why I feel like screaming Drupal SUCKS! Take these criticism and drupal review with a slight smile.

(This is all based on the experience with Drupal 8)

I am forced to work on Drupal on some systems here at work and first impression is: DRUPAL IS HORRIBLE, and here a list of what is wrong:

  1. Drupal is sold as a CMS, but in fact is a framework with a CMS-demo!
    Yes, it provides basic functionality that make you believe it is a CMS, but soon enough you will find out you that you cannot do much without extending it. Extending it means to reuse a. Plugins and b. Rely on Documentation on the website.
  2. Documentation is almost incomplete, inaccurate, always outdated and confusing
    Yes, you believe you found something and then jump to find out that is outdated and superseded in the current version. Or the developer of the module wrote something even he would not understand in a few minutes. More like a Perl programm that makes sense only in the 5 first seconds you wrote it.
  3. Plugins are always on beta.
    Or sometime even Alpha. And guess what, people use them! and force you to use them. By the time you need to security upgrade, the plugin is stilling degrading beta and you end up with nonfunctional websites.
  4. Modularity!? More like a sledge hammer.
    Modules are great! But use a module when there a logic to use a module. In Drupal modules are abused! Take the Migration(_plus) module for example.
    It is a module that you install once and you should use to migrate data. Logically you need to provide a mapping and invoke/trigger a migration process! In this module, illogically you need to create a new plugin for each migration and you trigger migration once you install it. If the installation goes wrong, there is no much information you can get if you screwed the mapping or if Drupal was doing something strange. And if you change the mappings, you will have to uninstall/reinstall the module again. And the process is a black-magic-box that requires a lot of effort….
  5. You want to work directly with the database!?
    Good luck with that! Assuming you might want to complete a migration process by mapping a file to database tables, you are hopeless. Drupal database is something that makes sense only through the Drupal Internal API.
  6. Server abuse!
    I turned debug on in some old Drupal 6. I was shocked to see the number of queries Drupal was sending to the database on every page view. We all agree that computing power is something cheap these days, but I have never seen a system that abuses memory and computer processing like a drupal page. There is no perception of optimization in the database interaction logic of Drupal, and most queries are expensive joint queries.

End point, I am terrified of people wanting to use Drupal! But still, there is demand and developers need to provide…


What is a domain hack!?

There are continously question on what a domain hack is, or if a domain is a domain hack or not.
Below is a set of categories that constitute domain hacks. If you domain fits into any of the following categories, then you have a domain hack:

Word Hack

A domain where both sides of the dot combine to form a word,

i.e. DE.AL

Dual hack

A 1-word domain that can also form another word using its extension,

i.e. (Box and Boxes)

Subdomain hack

A subdomain that forms a word across itself, the name and the extension,


Subdirectory hack

A subdirectory that forms a word across the name, the extension and itself,


Phrase hack

A domain where both sides of the dot are each a word and form a phrase,


Brandable hack

A domain where both sites of the dot form a short brandable “made up” word,

i.e. (commonly referred to as “Bitly”)

Partial subdomain hack

A subdomain that uses the subdomain and name only to work a word,


Split phrase hack

A domain where the last word in the hack is split across the dot,

i.e. CreditCa.rd

*Note: Many do not consider this a domain hack so they aren’t very highly sought.


.al domains are well known for a large number of domain hack combinations. These domains are usually cheaper than other tlds.

LLLL.Com Domains – Who is buying them!?

A few months ago, these domains where priced to about 40-50$. Now the price is around 300$ with a median of 800$. Why is that?

1. Who is buying!?
Check latest players involved in transactions from
My stats:
I checked 566 transactions of domains sold for more than 1000$

  • There are only 294 unique users (emails) involved. (Unique Users who bought one domain for 1000$)
  • There are 349 domains sold to domainers who bought more than 1 domain.
  • There are 142 domain sold to domainers who bought more than 10 domains.

(There is a margin of error, but spend a few hours and do your own check to prove me wrong)

hat happens in domaining is all about trends. Someone dictates the game, and domainers follow. You become a domainer when you learn that you are not someone special, you are part of a flock that is lead to “trends”. You are smart if you study these trends! Few can predict the trend; in domaining the trend is always crafted.

Dictionary domains, domain hacks, generic domains, chinese chips… these are all trends. Majority of domains is owned by someone already.

Again Stats!?
There is a total of 456,976 LLLL.COM out there.
More (way more) than 110,647 LLLL.COM domains are registered to users who own more than *100* of this specific type of domain. (This is a very very minimalistic number, my data have limited GoDaddy numbers, and also missing references from many smaller registries).
Only about 50000 domains are owned by those with more than 6 (4L) domains. I am not even considering as “domainers” those who do not have 5 LLLL.Com (no disrespect, only for the sake of argument).

So is domaining a pyramid?
Here is a challenging question for you who say it is not! How many 4L domains are traded every day (easy to find)!? and what happens if one of those guys who ownes 8980 domains decides to sell them for “the profit” he is expecting/preparing one day ?
-Hint! None will sell all in one day, it will be a slow process of hopess and demand 🙂

SEDO Fees – What are the real costs to sell a domain through Sedo?

Sold today a domain at SEDO, to notice that I will get not more than 56% of the listed price! That is right, the fees SEDO is chargin for my domain go up to 43% and this is why.


SEDO is still an important marketplace when it comes to domain sales, but I never realized how unfair it can be when it comes to commision fees. As one can see from the image, SEDO is chargin a plain fee of 200€ for a ccTLD domain. With a sale value of 549€, the percentage of SEDO goes up to 36.43%. This is way beyond what I was expecting, a comission of 20% as noticed at the moment of signup. Seems SEDO has introduced a discriminating 200€ flat fee for certain TLDs and if you are not aware, you will end up in that list.