Telichkin | 3 years ago | on: Synchronous vs. Asynchronous Code Review
Telichkin's comments
Telichkin | 6 years ago | on: The art project is dedicated to all space pioneers
We have tried to show the most important events in the history of space exploration: first spacecrafts, flights to other planets and landings on celestial bodies.
We believe that achievements in space belong to all mankind. We believe that space exploration is a significant step in the evolution of our civilization.
Telichkin | 6 years ago | on: Why I hate Agile methodologies (2010)
> Until today’s meeting, the friendly Agile consultant at my company has spent his time photoshopping the team leader’s face onto pictures of Yoda, and researching the motivational properties of various colours of magic marker. And he gets paid for it.
Telichkin | 7 years ago | on: Show HN: Own MobX in 65 lines of code
Functional UI is still need some sort of imperative shell [1] to manage state. You can use OOP and Remold just for "reactive" behaviour, and implement all state transitions inside object in a functional way. For example:
// Pure function
const addProduct = (order, product) => ({
total: order.total + product.price,
});
// Imperative state
class Order extends Remold {
state = {
total: 0
};
@act setState(newState) { this.state = newState; }
addProduct(p) { this.setState(addProduct(this.state, p)); }
}
> What are the advantages of this solution over features already in React (no need of Redux) such as context and the reduce hook?From the React Documentation about Context feature [2]:
> Apply it sparingly because it makes component reuse more difficult.
With Remold you don't have any problems with component's reusability. You just attach pure component to an object and "connect" object's state into component's props:
// Pure component
const OrderWidget = ({ total }) => <div class="widget">{total}</div>;
// Pure function
const addProduct = (order, product) => ({
total: order.total + product.price,
});
// Imperative state
class Order extends Remold {
state = {
total: 0
};
@act setState(newState) { this.state = newState; }
addProduct(p) { this.setState(addProduct(this.state, p)); }
@mold(OrderWidget) asWidget() { return { total: this.state.total }; }
}
[1] https://www.destroyallsoftware.com/talks/boundaries[2] https://reactjs.org/docs/context.html?no-cache=1#before-you-...
Telichkin | 7 years ago | on: Show HN: Own MobX in 65 lines of code
I realised that I just want to have many views connected to one dataset, and I want to re-render all connected views when dataset was changed. This is a simple pub-sub pattern which everyone can implement himself. So, I implemented it myself in just 65 lines of code. I use this solution in production for 6 months and don't see any drawbacks.
What are the advantages of Redux or MobX over this solution?
Telichkin | 7 years ago | on: Show HN: Learn React fundamentals
Vue is different. With it, you can't confidently use your previous programming experience.
Telichkin | 7 years ago | on: Ask HN: Go-to web stack today?
const
create_store = ({state, actions}) => {
const
after_update_do = [],
subscribe = fn => after_update_do.push(fn),
notify = () => after_update_do.forEach(fn => fn(state)),
create_action = action => (...args) => {
state = action(state, ...args);
notify()
};
return Object.entries(actions).reduce((bound_actions, [action_name, action]) =>
Object.assign({}, bound_actions, {[action_name]: create_action(action)}),
{subscribe})
},
counter = create_store({
state: 0,
actions: {
increase: state => state + 1,
decrease: state => state - 1,
multiply_add: (state, a, b) => state * a + b,
},
});
counter.subscribe(state => console.log('First reactive component was updated with: ' + state));
counter.subscribe(state => console.log('Second reactive component was updated with: ' + state));
Now you can call all actions directly from the counter and update all components in reactive manner. counter.increase();
// First reactive component was updated with: 1
// Second reactive component was updated with: 1
counter.multiply_add(2, 3)
// First reactive component was updated with: 5
// Second reactive component was updated with: 5Telichkin | 7 years ago | on: Show HN: Technical note app that builds a knowledge base
Telichkin | 7 years ago | on: Confessions of a programmer: I hate code review (2010)
Telichkin | 8 years ago | on: Show HN: OTP CheatSheet (Erlang)