Show more

RT @[email protected]
“The top 10, non-language repository topics ranked by the number of GitHub contributors to repos with the topic in the last year.” octoverse.github.com/projects

RT @[email protected]
Not everyone will agree with this insightful statement.

If this resonates with you, stay self-funded and take your time.

My only advice would be to not take fast growth off the table 🚀 twitter.com/amyhoy/status/1080

RT @[email protected]
Not C++ related, but worth noting: Not all game features are equal. Features such as online multiplayer and deterministic simulation need consideration in data and processing model design. Can’t add features like these late in development. Agile doesn’t mean no planning at all.

RT @[email protected]
Callbacks/delegates/listeners/events are dangerous in multithreaded environment. Destructor unregisters from all objs = modify all those objs (see next tweet). Firing an event = virtual call to N unknown targets. Impossible to make safe, unless you forbid parallelism during it.

RT @[email protected]
Predicting future is hard. Try delaying decisions and writing code as late as possible. This way you make decisions and write code that better suits the actual needs. Coding a feature that nobody uses is waste of time. Coding a feature too early often leads to big refactoring.

RT @[email protected]
”Primature optimization is root of all evil” is the most misunderstood sentence in CS. Planning your data structures is part of the architecture design, not an optimization. Good data layout both improves performance dramatically, and also improves code maintainability.

RT @[email protected]
You can’t multithread your code if you can’t ensure no data races. Processing of objects filled with pointers and references to other objects are hard to parallelize. Virtual functions are even worse. How can you know which data is accessed, if the call target is not known?

RT @[email protected]
Critical section (mutex, etc) teaches a wrong way to think about synchronization. You don’t want to synchronize code. Code is immutable. Race conditions (RAW, WAR, WAW) are all pure data hazards. Shared sync primitive guarding one function/class is often a code smell.

RT @[email protected]
Programs transform data. Data dependencies are the actual dependencies and define which data you need to process in which order, how you can parallelize the processing and which invariants need to be maintained. Code dependencies are often false dependencies.

RT @[email protected]
It might seem like a good idea at first to split several such long functions to small functions and reuse some pieces of shared code. But this adds dependency between these functions and reading experience is no longer linear. Modifications affect many functions -> higher risk.

RT @[email protected]
There are two types of long functions. Entangled and linear. If you avoid dependencies (see above), you can often write long functions which progress perfectly linearly. Trivial to read, modify and understand. No jumping around the code base. Minimal brain load.

RT @[email protected]
#1 problem in big code bases is entangled code dependencies. If you make code too generic or extract code too soon, you end up with more dependencies. Code used by 2+ call sites tends to eventually bloat with complex control flow. Bad performance, hard to understand and modify.

RT @[email protected]
A good practice is to copy-paste code three times, and then refactor (extract) if all three instances are still doing the same thing. Before this, you don’t want to add unit tests, because your code has no dependencies. Code without dependencies is the best code. Safe to modify.

RT @[email protected]
Now that people have already said highly controversial stuff like ”debugger is useless for C++ development”, I think I can share my own controversial thoughts about unit testing, DRY, copy-paste coding and function length, etc... with 20 years of C++ programming experience.

So much of this.
---
RT @[email protected]
Each unit test is an additional dependency. Another call site that uses your function/class/data. Adding a dependency to code/data that has zero dependencies is not free. It adds inertia. Further changes of that code slow down and some refactorings/optimizations become infeasible
twitter.com/SebAaltonen/status

RT @[email protected]
We like to underestimate complexity.
But even a Button element can contain an endless number of possible states.
Only 3 Variants (Size, Variant, Type) can put the Button in large number of states. Now think about components with a large number of props.

At the same time, TSMC is already building foundry for 5nm and 3nm capability.

I’m quite sure Samsung doesn’t want to lose out as well.

I agree that Intel is in deep shit.

I don’t agree traditional PC is at its end of road.

TSMC make chips for AMD and nVidia as well.

Intel couldn’t build 10nm chips while TSMC is already manufacturing 7nm A12 chips for Apple.

Ryzen 3 and nVidia GPU is planning to build on 7nm capability this year.

Apple is definitely at the forefront of chip design and they have a huge advantage.

But they have an extremely capable chip manufacturing partner with TSMC.
---
RT @[email protected]
"…some traditional PC folks feel like their world is slipping away. It is."
twitter.com/stroughtonsmith/st

This top the list in 2018 for me

Young & excited about space, water on Mars (or anywhere else) was always a fascinating question

Today, we not just know but saw a huge ice cap in another planet. That one step closer to knowing if water is a key ingredient for life as we know it
---
RT @[email protected]
We found this on Mars in 2018
twitter.com/jasonlk/status/108

Show more
Kopiti.am

From Singapore 🇸🇬 for Singaporeans by Singaporeans. But all are welcome!

This aims to be a local instance of Mastodon that primarily works as a community for Singaporeans which also participates in the greater fediverse that is Mastodon.

We adhere to Toot.cafe’s list of blocked instances.