profile
viewpoint
Ian Obermiller ianobermiller Facebook Seattle, WA USA http://ianobermiller.com Software engineer at Facebook, currently building a design tool in React and Redux.

FormidableLabs/radium 7204

A toolchain for React component styling.

ianobermiller/gotwopc 3

Two-Phase Commit in Go

ianobermiller/CipherSaberJS 2

CipherSaber 1 and 2 implementation in JavaScript.

ianobermiller/activitywatch 1

Log what you do on your computer. Simple (yet powerful), extensible, no third parties.

ianobermiller/aw-watcher-window 1

Cross-platform window watcher (for use with ActivityWatch)

ianobermiller/ianobermillercom 1

ianobermiller.com source

ianobermiller/arffsharp 0

A .NET reader for the Attribute Relationship File Format (ARFF) used by Weka.

ianobermiller/autobrowserchooser 0

Automatically choose the correct browser to launch based on the url. Currently launches intranet, microsoft.com, and click-once urls in Internet Explorer, and everything else in the browser of your choice.

ianobermiller/aw-webui 0

A webapp for ActivityWatch built in Vue.js

ianobermiller/babel-handbook 0

:blue_book: A guided handbook on how to use Babel and how to create plugins for Babel.

issue openedai/nanoevents

Consider replacing filter in emit

You could replace the call to Array.prototype.filer in emit with the semantically correct forEach to avoid the array allocation, but that would make the code one character longer.

If you want the code to be shorter and don’t care about the allocation, you could change it to map.

created time in 4 days

issue openedtauri-apps/tauri

[docs] "Proton" in wiki

This wiki page still mentions Proton when talking about why rust: https://github.com/tauri-apps/tauri/wiki/01.-Introduction

This combination of power, safety and usability are why we chose Rust to be the default binding for Proton

I'd submit a PR, but sadly that is not possible for wiki content.

created time in a month

issue closedfacebookincubator/redux-react-hook

ts error in example

TSlint is throwing error at line[36, 60] ./example/src/Store.ts per below

'Untyped function calls may not accept type arguments.ts(2347)'

Should this already resolved by the following commit? https://github.com/facebookincubator/redux-react-hook/commit/d68d7a1df3fb1e00c96ba3a8d9cd3ebb557184aa

closed time in 2 months

fuleinist

issue commentfacebookincubator/redux-react-hook

ts error in example

I can't reproduce this (and TS shows the call is typed correctly). I'm not even using TSLint for this repo (not in package.json). Try disabling TSLint for this workspace?

fuleinist

comment created time in 2 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 76e8eb1a70499e5ddaf1b65262efa1b62dbea5fe

Update dependencies run `yarn audit`, no more vulnerabilities!

view details

push time in 2 months

issue closedfacebookincubator/redux-react-hook

another crazy thought: reimplementation of Redux reselect.. built on top of this library

Hi.. it's me again :)

This issue is unrelated to my previous issue #78.. where I introduced a little library that is a light-weight wrapper around the redux-react-hook library to add an enhancement to useDispatch().

This issue pertains to another enhancement that I added to that library, which is a function called createReduxSelector which aims to provide a (very nearly) drop-in replacement for Redux reselect.

Links to learn more..

I just wanted to let you know about it..

  • it's already extremely efficient
    • there's always room for improvement, and I'm very open to ideas/suggestions
  • is this something you'd consider including in the upstream redux-react-hook library?

closed time in 2 months

warren-bank

issue commentfacebookincubator/redux-react-hook

another crazy thought: reimplementation of Redux reselect.. built on top of this library

That looks interesting, I'm having a bit of trouble following what it is for, though. I see a lot of hooks being called conditionally which is usually not good, but if it is the same on every call it might be fine. What does this library buy you over just using reselect directly?

I'd like to keep this library (redux-react-hook) lean, so this should be a separate module. I'm going to close this issue, but we can have further discussion here.

warren-bank

comment created time in 2 months

issue commentfacebookincubator/redux-react-hook

crazy thought: useDispatch() returns wrapper that invokes dispatch() on Redux store as well as any number of React.useReducer() state mutators

Yup, I can see the utility in this. Nice work making your idea a reality that others can share!

warren-bank

comment created time in 2 months

issue commentfacebookincubator/redux-react-hook

crazy thought: useDispatch() returns wrapper that invokes dispatch() on Redux store as well as any number of React.useReducer() state mutators

pretty neat.

any action passed to this function will be forwarded to all registered React dispatch function(s)

This is problematic, as it breaks encapsulation and makes it possible for components to be coupled solely via the global state in the library. To make that cleaner, you'd have to use a context provider.

warren-bank

comment created time in 2 months

issue commentfacebookincubator/redux-react-hook

ts error in example

Did you build the main directory first? It copies some files into the example directory. We should probably just get rid of TSLint anyway at this point. Feel free to send a PR if you'd like to help!

fuleinist

comment created time in 2 months

issue closedfacebookincubator/redux-react-hook

Custom comparator

Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation.

closed time in 3 months

ianobermiller

issue closedfacebookincubator/redux-react-hook

crazy thought: useDispatch() returns wrapper that invokes dispatch() on Redux store as well as any number of React.useReducer() state mutators

I don't know if this would be considered an anti-pattern.

Redux seems like the right place to store state that needs to be shared with other React components. But if for some reason an app chooses to store some bit of state in a React component and then needs to pass callbacks to children, it is likely to follow the recommend convention to pass down a dispatch function from useReducer via context.

In this scenario, it would be convenient to be able to merge Redux and React dispatch functions.

pseudo code:

import {useReducer} from 'react';
import {useDispatch} from 'redux-react-hook';

function todosReducer(todosState, action) {
  switch (action.type) {
    case 'ADD_TODO':
      return [...todosState, action.payload];
    default:
      return todosState;
  }
}

function TodosApp() {
  const [dispatch, addDispatcher] = useDispatch();  // could omit `dispatch` from destructured Array
  const [todos, todosDispatcher] = useReducer(todosReducer, []);
  addDispatcher(todosDispatcher);

  return (<DeepTree todos={todos} />);
}
import {useDispatch} from 'redux-react-hook';

function DeepChild(props) {
  const [dispatch, addDispatcher] = useDispatch();  // could omit `addDispatcher` from destructured Array

  function handleClick() {
    dispatch({ type: 'ADD_TODO', payload: 'buy milk' });
  }

  return (
    <button onClick={handleClick}>Add todo</button>
  );
}

implementation could be as simple as:

in file create.ts:

change from:

  function useDispatch(): Dispatch<TAction> {
    const store = useContext(StoreContext);
    if (!store) {
      throw new MissingProviderError();
    }
    return store.dispatch;
  }

to:

  const reactDispatchers = [];

  const addDispatcher = (dispatch) => reactDispatchers.push(dispatch);

  function useDispatch(): Dispatch<TAction> {
    const store = useContext(StoreContext);
    if (!store) {
      throw new MissingProviderError();
    }

    const combinedDispatcher = (action) => {
      ;[...reactDispatchers, store.dispatch].forEach(dispatch => dispatch(action))
    }

    return [combinedDispatcher, addDispatcher];
  }

closed time in 3 months

warren-bank

issue commentfacebookincubator/redux-react-hook

crazy thought: useDispatch() returns wrapper that invokes dispatch() on Redux store as well as any number of React.useReducer() state mutators

I think this is a bit too specific to include in this generic library, and it is also a bit more complicated than presented. Importantly, the added dispatch should only be available to child components (not globally) and you need a way to remove the added dispatch when the parent component unmounts. Since you can't add a context provider with hooks,, I think the only way to do this would be by using a special wrapper component (with a context provider):

function TodosApp() {
  const dispatch = useDispatch();  // could omit `dispatch` from destructured Array
  const [todos, todosDispatcher] = useReducer(todosReducer, []);

  return (
    <CombineDispatches dispatches=([dispatch, todosDispatcher]}>
      <DeepTree todos={todos} />
    </CombineDispatches>
  );
}

function DeepChild(props) {
  const dispatch = useCombinedDispatch(); // Could fallback to redux-react-hooks dispatch

  function handleClick() {
    dispatch({ type: 'ADD_TODO', payload: 'buy milk' });
  }

  return (
    <button onClick={handleClick}>Add todo</button>
  );
}

If you'd like to release such a library, I'd be happy to promote it in the docs!

warren-bank

comment created time in 3 months

issue closedfacebookincubator/redux-react-hook

Missing equality check in flowtype

https://github.com/facebookincubator/redux-react-hook/blob/889384e30bccedfa15ccb53415abf423f3f11ee3/src/index.js.flow#L60-L62

closed time in 3 months

scriptist

issue commentfacebookincubator/redux-react-hook

Missing equality check in flowtype

Fixed by 5008c2f72405eee374074888d482c9b8a2603893

scriptist

comment created time in 3 months

CommitCommentEvent

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 5008c2f72405eee374074888d482c9b8a2603893

Add equalityCheck to useMappedState flow def

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 889384e30bccedfa15ccb53415abf423f3f11ee3

v4.0.1

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 073ff1978e84ed3a6d6732377bc21a6db1c33e25

v4.0.0

view details

Ian Obermiller

commit sha 5275dffd8defce004afd6ea5de3c9e30a0f987a1

v4.0.1

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha bbe1dfcf984edf3c922ff99d1b511dfbf239d9b4

Custom areEqual function (#76) Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

PR merged facebookincubator/redux-react-hook

Custom equalityCheck function CLA Signed

Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation.

The motivation for this change is that returning an ES6 Map directly from mapState would cause shallowEqual to return true, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle Map and Set by reference, or perform a shallow comparison on the values.

+171 -63

0 comment

5 changed files

ianobermiller

pr closed time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 405504a4ac02f26743f3bfa81326a6e1b628323c

Custom areEqual function Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 91ee7ae13da3b61c7c56c478aca19fc7effe4f0c

Custom areEqual function Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha eeca1f1537d57a6bb1b8777efebe33ab9bc9c281

Custom areEqual function Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 7015c2ed915c7c87dec51f3997847dde97940fac

Custom areEqual function Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 312975932011a7ee18d4ae6e62eb3fe7b974a46e

Custom areEqual function Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 3d18b7c4809f808fe821b2df3104c5b3d071018a

Custom areEqual function Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha dc8a8faf782991232f90af5bcceb4e8373a77dbb

Custom areEqual function Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha 45cc2f6e6ce5d4283959476ffd07adca71755859

Custom areEqual function Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation. The motivation for this change is that returning an ES6 Map directly from `mapState` would cause `shallowEqual` to return `true`, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle `Map` and `Set` by reference, or perform a shallow comparison on the values.

view details

push time in 3 months

PR opened facebookincubator/redux-react-hook

Custom areEqual function

Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation.

The motivation for this change is that returning an ES6 Map directly from mapState would cause shallowEqual to return true, and then the component won't re-render, even if the map instance has. After this change, your comparison function can either handle Map and Set by reference, or perform a shallow comparison on the values.

+152 -87

0 comment

7 changed files

pr created time in 3 months

create barnchfacebookincubator/redux-react-hook

branch : custom-equals

created branch time in 3 months

issue commentfacebookincubator/redux-react-hook

High level API discussion: do we even need useMappedState

My guess is as good as yours. Judging by NPM stats, people are still using it, but it isn't growing much. We use it internally for a few products at Facebook. My sense is that there is still a demand for a lighter weight way to use hooks with Redux. Do you see react-redux offering a hooks-only version in the future?

ianobermiller

comment created time in 3 months

issue openedfacebookincubator/redux-react-hook

Custom comparator

Per #74, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation.

created time in 3 months

issue closedfacebookincubator/redux-react-hook

High level API discussion: do we even need useMappedState

@gaearon and I were discussing a mismatch in the model of hooks and react-redux. To quote some of our conversation:

If I'm honest, the whole useMappedState API seems flawed to me.

Redux API has mapStateToProps because it literally gives you ... props. But in Hooks you don't have a layer in the middle. You're already in render. There's no props to give.

How much does it gain you compared to direct non-mapped useStoreState()?

The idea is that useMappedState is hard to implement efficiently (it has grown pretty ugly already) and easily because it is really trying to recreate much of what React hooks already do.

The example code would basically use components as containers and selectors, similar to connect:

export default function DeleteButtonContainer({index}) {
  // Fetch state and subscribe to the store
  const state = useStoreState();

  // Map your store state to what you need, using `useMemo` or selectors
  const stateProps = useMemo(() => state.todos[index], [state, index]);

  // Callbacks
  const dispatch = useDispatch();
  const deleteTodo = useCallback(
    () => dispatch({type: 'delete todo', index}),
    [dispatch, index],
  );

  return <DeleteButton {...stateProps} {...{deleteTodo}} />;
}

const DeleteButton = React.memo(({canDelete, deleteTodo, name}) => {
  return (
    <button disabled={!canDelete} onClick={deleteTodo}>
      Delete {name}
    </button>
  );
})

And useStoreState could look something like (stripped down for brevity):

export function useStoreState<TState>(): TState {
  const store = useContext(StoreContext);
  const [storeState, setStoreState] = useState(() => store.getState());

  useEffect(
    () => {
      let didUnsubscribe = false;

      const checkForUpdates = () => !didUnsubscribe && setStoreState(store.getState());

      checkForUpdates();

      const unsubscribe = store.subscribe(checkForUpdates);

      return () => {
        didUnsubscribe = true;
        unsubscribe();
      };
    },
    [store]
  );

  return storeState;
}

Basically it just passes the entire state to the React component.

If you wanted to put them all in a single component:

export default function DeleteButton({index}) {
  // Fetch state and subscribe to the store
  const state = useStoreState();

  // Map your store state to what you need, using `useMemo` or selectors
  const {canDelete, name} = useMemo(() => state.todos[index], [state, index]);

  // Callbacks
  const dispatch = useDispatch();
  const deleteTodo = useCallback(
    () => dispatch({type: 'delete todo', index}),
    [dispatch, index],
  );

  // React will bail if the return value is reference equal
  return useMemo(() => (
    <button disabled={!canDelete} onClick={deleteTodo}>
      Delete {name}
    </button>
  ), [canDelete, deleteTodo, name]);
}

Or if you want one container and multiple children:

function Parent() {
  const state = useStoreState()
  return (
    <>
      <Child val={selectX(state)} />
      <Child val={selectY(state)} />
    </>
  )
}

const Child = React.memo(function Child({val}) {
  return <div>{val}</div>;
});

closed time in 3 months

ianobermiller

issue commentfacebookincubator/redux-react-hook

High level API discussion: do we even need useMappedState

Closing this out for now since I don't think we are going to drastically change the API.

ianobermiller

comment created time in 3 months

PR closed facebookincubator/redux-react-hook

Support re-rendering when a Set/Map changes CLA Signed

The current shallowEqual implementation always returns true when the provided values are both Sets or Maps. This results in components failing to re-render when a Set or Map changes.

To resolve this, I've switched to the fast-equals implementation of shallowEqual, which has built-in support for Sets and Maps.

I've also added a test that confirms this behaviour.

+29 -45

3 comments

5 changed files

scriptist

pr closed time in 3 months

pull request commentfacebookincubator/redux-react-hook

Support re-rendering when a Set/Map changes

Thanks for the PR! Instead of pulling in another library as opposed to shallowEqual, I propose we release a new major version of redux-react-hook in which you pass in your own equality comparator. That way you won't be tied to a particular comparison implementation.

scriptist

comment created time in 3 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha d4719a0aaa7a259a8f035854a18fd9e6ec7fef61

Remove flowlint suppressions Not needed in general, also remove the strict-local pragma, since both depend on your config. Fixes #57

view details

Ian Obermiller

commit sha 7b75c8b2d75a5f25f4d526ec58d87ebd55f586f5

Upgrade example packages

view details

Ian Obermiller

commit sha fadbf1ec9efa389bc60a77949258214f4f261b34

v3.4.0

view details

push time in 4 months

issue closedfacebookincubator/redux-react-hook

Flow error: Redundant argument. This argument doesn't change any lint settings.

When trying to upgrade to latest version of this library (3.3.2 from 3.2.1) I get Flow failures for both the usages of: // flowlint-next-line unclear-type: off indist/index.js.flow The error is: Redundant argument. This argument doesn't change any lint settings. Happens when using Flow 0.100.0

closed time in 4 months

osmestad

issue closedfacebookincubator/redux-react-hook

useMappedState returns incorrect value

Please see this CodeSandbox for simple redux app that has 2 inputs, that will dispatch a show/hide action on focus/blur event.

If you move the focus from the first input to the second, the the app will dispatch 2 actions & the reducer will update the store correctly (you can check it from redux dev tool)

However, the value returned from useMappedState is incorrect.

The interesting thing is, if I call useSelector hooks from react-redux then the return value of useMappedState is correct again. (You can try it by comment/uncomment line 35 of the code)

Another question is that is this project going to be deprecated in favour of built-in hooks from react-redux? Honestly I don't mind migrating to react-redux, but I couldn't find a way to make it work with multiple redux store

closed time in 4 months

dangcuuson

issue commentfacebookincubator/redux-react-hook

useMappedState returns incorrect value

Verified this is fixed in master: https://codesandbox.io/s/distracted-kirch-j6xl8 (copied the source in). It was fixed by e8830371ec22fe171a98f1b537a7a3f8e8ef0af3, which hasn't been released (doing it now).

dangcuuson

comment created time in 4 months

issue closedfacebookincubator/redux-react-hook

use useEffect instead of useLayoutEffect

Setting here https://github.com/facebookincubator/redux-react-hook/blob/e8830371ec22fe171a98f1b537a7a3f8e8ef0af3/src/create.ts#L115 useEffect instead of useIsomorphic... gives zero failing tests, even test provided for useLayoutEffect change works fine. From what I see there is no real need of using useLayoutEffect in that place or any real test needed.

closed time in 4 months

istarkov

issue commentfacebookincubator/redux-react-hook

use useEffect instead of useLayoutEffect

So I wrote some tests that don't work if you useEffect, so I think it is wise to keep useLayoutEffect for now.

istarkov

comment created time in 4 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha f0aa0fcd424965dfe024735dc007cae7ae38eee8

Add test for rendering with the latest state

view details

push time in 4 months

push eventfacebookincubator/redux-react-hook

Ian Obermiller

commit sha c2ac6b4fa29cd2641eb3850c3ff45cfc1a00aeca

Update dependencies - yarn upgrade --latest - add watchman and vscode configs - fix tsconfig after update - prettier fixes

view details

Ian Obermiller

commit sha 86279c2b58cad47a89bb49043ed3b01766c0fa09

Use useState instead of useReducer Also pull out increment into a constant to avoid the extra allocations

view details

Ian Obermiller

commit sha ab5cc9c15196e871b367e1790c87aaa96881ebbf

Suppress act error in tests

view details

push time in 4 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 91b66c6ab8b8c58abe52ea194a3fbf77b80a8dc1

Move nav down to align with subtitle

view details

push time in 4 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha d6030b926b1100b28f77d787eae3be47e7a2b6a1

add contact information to footer

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha ac84741ed59f5cca4e310936013e3d035ea301eb

Hide code block language on mobile

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 857b64043cf8a67eb664c4fb7afc1e8a97948b4c

break long code lines

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha fabbfe9a0b5f13f696b8361b586b148ae94054c5

Align to baseline grid

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha ca50d843ff9d9293a2ff225d99b1d4341a4c5e6b

Update conditionally-load-intl-polyfill-webpack.mdx

view details

Ian Obermiller

commit sha 98b8e6c396d7e47e02fb30d31de10eb07d71cbae

Remove blank lines after code codemod -d src/pages/blog -m '\n\n\`\`\`\n' '\n```\n'

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha b66d065aa73bc485e9e435edf786a0a3ffaadcbf

Remove extra space under post title in index

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 9cfd3b2e07a9c9fcce314ed02890b20fc1b3024a

Remove prism dark theme

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 3c28cce9dbd2a5f6568d724198955770065b2c56

Cleanup and consolidate code style Also reorder css file

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha f78462c3d0ba9d15c0e66648d4ba220772756413

Remove shadow from code

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 57a882a66847152ecf589451592ad544b91e7c10

Bump line height

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha f7ed8419f430216e496577d8cad0a96c3f77867d

Rethink nav Remove projects, rename about to about me, and blog to posts

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 9ffab81a925e262dd32c14a6b57eb77773b21e24

Fix code formatting in Typescript Highlights

view details

Ian Obermiller

commit sha d57b1143f35978e7da46a663cc30d9eb81c1469e

Update react-anti-pattern-positional-children.mdx

view details

Ian Obermiller

commit sha 7c0712d0deee0df55e73d445a8c96f569a8a43c5

Style updates Switch to purple instead of orange Increase spacing all over

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 259e4f4d037262f51ecb76ca3107bb495862099f

Fix pretty printing example length indicator

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha b83b420b46a76d126fa8361d74bba2dd32fffbf2

Decrease code font size Primarily for mobile viewing

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha fc6c1b5462f65f221b61b324dd616835620d662c

Move prism styles to just use a media query

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 41b4e4914fc1e911852497a7489d2f87307a3b97

Clean up code theming

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha b6d27148785b9bcff65e3e8189974d42d10feaf3

Fix prism in dark mode

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha f9b0d737778735bd89f47a3a25346b8460e7b365

Add meta description

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha e11cb53bd07868c83a8724173dc82a5dcb9e6ac3

Fix blog index wrapping on small screens

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 028f3c4cddf8c8397d3433912bb4476da4ae095b

Dark mode - enable scss - fix title link -

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha cd53787f564dba2ef64e29cf1a8193bd2d7f7f2f

Accessible colors - make the colors more accessible - underline selected page - html lang attribute - hide heading for normal pages

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 7683557877bcc7d6b434b9a2bdfe40516ffd8402

Scratch web fonts for system fonts

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 00e7a3e2039e9ac939616970b050bbbd187f3cbe

Show "Blog" in title for /blog

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 3f86455e5608e507913a4a725383b8c9818acd0f

No need for template strings

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha fbd1515f37c533e73194d22a2bec44375e9ac869

Add google analytics

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha f5b42a69a9059a0890cba9e36e37360b9321b880

Delete unfinished post

view details

Ian Obermiller

commit sha 96ef0eb31a97ea96d814b2ff363d566b85cc3d1e

Fix insecure youtube embed

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 01cc97a959b16ea48aeadadb0df503941da1e8f9

Factor out getBlogPostUrl

view details

Ian Obermiller

commit sha e0b5b8cb5c708330050a46104ef881a29b88e737

Refactor blog index to use useStaticQuery It is less magical

view details

Ian Obermiller

commit sha 92992115754301a812eb00fdbb9d61818f4b9fd7

Add favicon

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 153204f99c97da7d43ea93ad7836b8645eafd207

Add RSS feed Test plan: yarn build # only shows up in prod build check out public/rss.xml

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 073d3646aad44a0c65d0853b52287a979655ceda

Add blog post count

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 32d46a142f97588e38529795363e66d6f26ce978

Share date styles

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 9c27716a540881e5ac6dfe555e275bca0b985bec

Make WrapTextExample more robust to SSR

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha be0e98b977981739de9027b8a42097e5f9bceb8a

Fix css order

view details

Ian Obermiller

commit sha 9b6af3aabe42146e0102f17684e27e29478b6dcd

Cleanup blog page style

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha ae8a818d19a9a17f2e478c206150067d035cd0d8

Clean up syntax highlighting styles And add style for small tags

view details

Ian Obermiller

commit sha 83e209ebea3acb0c72c6573802d298f1441bd03d

Codemod away HTML entities from blog posts

view details

Ian Obermiller

commit sha b81f30a7ed5bace979ec2d54bc5c836b961965c5

Move layout styles to emotion

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha a14131f9cf858df907b481dabdd3bfe9de2a5720

Syntax highlighting

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha c32adca0780d93ecf5e9360a2e67280f4b50a94f

Oops, make it ssr friendly

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 4d606479ace3dd9a8881fd2f7ea9f71b2be3bea5

Fix pretty print post

view details

Ian Obermiller

commit sha 94291192fdc3652311ec4e9fefb26f53799cca56

Add styles for code

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 1277fe3ef6471de6a2d21ef77738f9ce43734aa2

Fix AuctionDB logo

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha bb63427fe6cf5bd484e184958940b82f916b51d7

Add page name to title - Add back in the google font - Rename home to about

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 3363e516bf915dd0e75cd9fbc7de8f3e1708bae2

Don't hotlink images Instead of hotlinking images, use the gatsby-remark-images plugin. Note the gross line in the config to make sure the styles get injected :(

view details

push time in 5 months

push eventianobermiller/ianobermiller.github.io

Ian Obermiller

commit sha 1049b5d06480d1e2bbccf9c0ed6d33b14ffcc88f

Add privacy policy from Termly! https://app.termly.io/document/privacy-policy/79d23443-36c0-4c7a-b1ab-43dcf846d822

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 98838428ce4821122b0f94bbce97a9a839c49fce

add gitignore

view details

Ian Obermiller

commit sha 2c401ec0bd2582de2f2532d1e1461eea176611b9

Gatsby starter gatsby new gatsby-starter-typescript https://github.com/haysclark/gatsby-starter-typescript

view details

Ian Obermiller

commit sha c439177dfee2b648750496729ee4454a7b4115a4

Cleanup package.json

view details

Ian Obermiller

commit sha 8904265876b7054751e5e1f53cbfd1a6cce9b939

Convert to hooks

view details

Ian Obermiller

commit sha 97da3552de9349e79b43a9394dd784b0940d32a7

Update css

view details

Ian Obermiller

commit sha 5106217f71b9960f268cb601f2ee916d9a313a59

Add first blog page

view details

Ian Obermiller

commit sha 9b16146f898e5ad4d9e5f911baa63d9b894472a3

Basic layout for ianobermiller.com

view details

Ian Obermiller

commit sha 2fd96bfff91dc4fcaae832c8f3c593285f71de86

Upgrade packages

view details

Ian Obermiller

commit sha c0af44f347be61538b2d1489b2bc3c4721358a8e

Markdown working!

view details

Ian Obermiller

commit sha 9f39fea475bf9d1df40187c3ce16f7d6b14de830

Major cleanup - move all the blog posts into folders - fix code blocks in blog posts - add a crappy index page

view details

push time in 5 months

issue commentfacebookincubator/redux-react-hook

useMappedState returns incorrect value

Thanks for the super clear repro, I'll take a look!

The interesting thing is, if I call useSelector hooks from react-redux then the return value of useMappedState is correct again. (You can try it by comment/uncomment line 35 of the code)

That is wild. It must have something to do with the way subscribers are notified.

Another question is that is this project going to be deprecated in favour of built-in hooks from react-redux? Honestly I don't mind migrating to react-redux, but I couldn't find a way to make it work with multiple redux store

Probably worth opening an issue to discuss this in general. This library was a nice stop gap until we got official hooks support. However, redux-react-hook is substantially smaller than react-redux with hooks, so if you only need hooks it is a nicer option. It has also been quite optimized (maybe a bit too much considering this bug).

dangcuuson

comment created time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 729753e950abe48d16ec681fb96752a289da166d

Add styling, about, projects

view details

push time in 5 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 2df66d9510ffbaffa23179121cff7c6199436606

Add mdx and a single blog post

view details

push time in 6 months

issue commentfacebookincubator/redux-react-hook

use useEffect instead of useLayoutEffect

@goloveychuk are you up for fixing this?

istarkov

comment created time in 6 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha 77ffa290c2a01019f93c0393afabdb1cca028a9e

Ignore artifacts dir

view details

push time in 6 months

push eventianobermiller/ianobermiller.com

Ian Obermiller

commit sha dfcfd76f0c85d533ad5d7e84814ef91097300f27

Initial commit from `react-static create`

view details

push time in 6 months

create barnchianobermiller/ianobermiller.com

branch : master

created branch time in 6 months

created repositoryianobermiller/ianobermiller.com

Source code for ianobermiller.com

created time in 6 months

more