Showing posts from January, 2021

Feeling overwhelmed by work

I aways get the feeling of being overwhelmed by work. The thing that helps me relieve it is going through all the tasks and prioritizing them, sorting them out, removing what's not essential and ruthlessly executing on the ones that are.

Work smarter, not harder

Do not optimize for speed of execution.

Velocity > speed

Speed is the time rate at which an object is moving along a path. Velocity is speed + direction. Velocity is better than speed. It's not important how fast you go, but where will you arrive.

Meetolog is now meetlog.

Say Hi to Meetlog

Massaging types in typescript (part 2)

TLDR; In part 1 we've covered three of the most basic type utils that TypeScript provides: "typeof" , "keyof" and "indexed access" . In type two we'll learn about: Pick 👌 - constructs a new type by extracting the Keys out of type T . So given type User = { name: string, address: Address | string } and type UserAddress = Pick<User, 'address'> results in type UserAddress = { address: Address | string } . Omit 📌 - the exact opposite of Pick . It picks all type properties by default, but omits the Keys . So having the above example and type UserName = Omit<User, 'address'> results in type UserName = { name: string } . Exclude 🪚 - a handy way to "strip down" a union type. Let's introduce the type type Address = { lat: string, lon: string } | { city: string } . So type StrictAddress = Exclude<Address, { city: string }> would result in type StrictAddress = { lat: string, lon: stri

Massaging types in typescript (part 1)

TLDR; In TypeScript, we can retrieve type information in many different ways. In type context we can use: typeof - refer to the type of a value or a property: typeof "some string" is string ; typeof 1 is number etc. keyof - given an object, reduces it to an union of it’s keys: type keys = keyof { name: "Bobi", age: 29 } resolves to the following type: type keys = "name" | "age" indexed access - given type Person = { name: "Bobi" } and type PersonName = Person["name"] , the PersonName resolves to string TypeScript is great when it comes to types reusability. Once defined, a type can be “massaged” in order to suit different business logic needs. Here’s one simple example. 1 2 3 4 5 6 7 8 9 type Person = { name: string, age: number }; const person: Person = { name: "Bobi" , age: 29 }; const updateName = (p: Person, name: string) => { = name; } updateName(person, "John" ); /

Meetolog progress: the meeting page

In the last couple of days I've been improving the meeting page. This is the page where the meeting I/O gets managed.

Using TypeScript Intersections to extend component's props in React

Every app has buttons.

Meetolog progress: editable component

In the last few sessions I've been working on an editable component. It's a component that has two building blocks - a preview and an editable input.

Truths about people

 Here's something I shared in twitter, but I'd like to have it here as well.

Meetolog progress: creating meetings, UI improvements, routing

  New year, same hustle.

Come to the dark side (if it's essential to you).

Here's a note to myself:  do not waste time on inessential stuff.