This project was bootstrapped with Create React App.
You can find the most recent version of the CRA README here.
portfolio site at shanedg.com
Home Page: https://www.shanedg.com
This project was bootstrapped with Create React App.
You can find the most recent version of the CRA README here.
Automatically perform a slow scroll of any overflow content in a Snippet
component when the component enters the viewport. Leverage IntersectionObserver
for visibility detection.
Useful for grabbing attention (i.e. "under construction" messaging), demonstrating occluded snippet is not "broken" behavior, and actually displaying longer snippet content in its entirety with limited screen real estate, especially on smaller screens.
Return to start once scroll has completed or remain at maximum x position of snippet container? If returning, should return animation snap, proceed at same speed in reverse, or race quickly back to start position?
#43 broke App.test.js
, seemingly by removal of setTimeout
call wrapping the reference to the Toaster ref'd child's state...
also "soft 404s"
After a lot of reading:
https://www.iubenda.com/en/help/8385-gdpr-cookie-law-caloppa-online-compliance-for-blogs
https://www.iubenda.com/en/help/11994-privacy-policy-for-google-analytics
Seems like legally the safest thing to do is always forbid cookies until user explicitly opts into them, even for anonymized-ip, no-data-sharing Google Analytics.
However, this is relevant only in the EU. And I am not selling anything to anybody, especially not in the EU. And when I adhere strictly to this, my portfolio site's minuscule traffic entirely disappears.
Realistically, I knew from the outset that I would never really need a Privacy Policy and a Cookie Policy and strict adherence to EU Cookie Law for a small portfolio site. But I enjoyed the exercise.
Now what I should probably do is just kill those components and reuse them for some other gimmick.
Animated transitions between routes can jump if navigating from route with tall content to route with short content and window scrollY is any greater than 0. Smooth scroll to top of document on transition would alleviate this.
Probably ideal for the smooth scroll to be cancellable if the user is already scrolling or if the user begins to scroll during.
Extra padding needed at bottom of viewport to render all content visible when Snackbar component is position: fixed
there. Calculation of Snackbar height and update of padding-bottom
on App container element is performed on App component mount but should also be repeated on window resize.
After upgrading to latest create-react-app
in #62 , now possible to use Sass files out of the box. Convert *.css
files to *.scss
.
ConsentToaster
component implements an attractive, low-profile notification box in the style of a Material UI "snackbar" component. Generalize this component so that it can be used for more than just cookie consent messaging.
Perhaps leverage Material UI and <Snackbar />
itself? As an aside, I don't know where I got "toaster" from.
Popular effect on many sites, although this example usually includes navigation.
Header starts as a larger block, fixed to top of viewport. As user scrolls down towards more content (when there is any/enough to overflow viewport-y), the header elements shrink and collapse to take up less of the available viewport real estate. Compromise between fixed nav/header and space in the viewport for content.
Usually, the header begins to "grow" back to its original dimensions as soon as the user begins to scroll back up to the top; sometimes one pixel of scroll back up is enough to return the header to its initial state. This, I think is a bad choice because of the implications for scrolling up and down slightly several times in a brief interval, common behavior for e.g. folks searching and scanning for specific content.
The alternative should be to trigger the header restore when the window has been scrolled back to the position at the top where the header shrink initially.
service worker is caching really hard, difficult to get new version without 'bypass for network' in application tab
Current approach to rendering react-router routes on live site leverages CloudFront to intercept would-be 403 errors and instead return 200 OK and serve the create-react-app index.html at the attempted route.
Downsides to this approach
www.shanedg.com
are valid, no true 40x errors to let user/crawlers know they have gone astray; best-case scenario is "soft" 404srobots.txt
is not being located and parsed if it existsResolution
create-react-app
begins to address here, but this is not entirely satisfying; solution is not 100% fleshed out; not exactly "universal" or isomorphicyarn eject
and go nuts, but not sure that really makes this process any more straightforwardasyncComponent
concepts from this guideCurrently using local ref
just to read desired DOM element height value into state and then access the state of that component through a separate ref created by the parent and attached to the component.
App.js should not have to reach depth of state
to get the DOM height we need: this.toasterRef.current.state.height
Rather: this.toasterRef.current.clientHeight
Add Prettier to enforce consistent style across the codebase:
https://github.com/prettier/prettier
CRA support added, details here
When the role details are toggled open, the role details list animates in with a staggered effect at the same time as the containing element is toggled in by animating scaleY()
. On exit, the scaleY()
animation on the containing element is reversed but the staggered entry of the individual role description items is not.
This may actually be desirable behavior, but want to compare against reversing the staggered effect.
Current setup has App.js
at the top of /src
, and then the rest of the components are stored in /src/components
. Some are then nested within other components and this makes relative references brittle and convoluted.
Consider creating an alias to the /src
or /components
directories to alleviate relative referencing issues.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.