<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <generator>Persumi - Level up your writing and blogging with AI</generator>
  <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
  <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
  <link href="http://persumi.com/u/fredwu/tech/e/blog/t/blog"/>
  <link href="http://persumi.com/u/fredwu/tech/e/blog/t/blog/feed/rss"/>
  <link rel="self" href="http://persumi.com/u/fredwu/tech/e/blog/t/blog/feed/atom"/>
  <author>
    <name>Fred Wu</name>
    <email>ifredwu@gmail.com</email>
    <uri>http://persumi.com/u/fredwu</uri>
  </author>
  <subtitle/>
  <id>http://persumi.com/u/fredwu/tech/e/blog/t/blog</id>
  <title>Blog (blog) - Fred Wu&apos;s Tech</title>
  <updated>2026-07-10T13:42:21.586589Z</updated>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
Like many software engineers and indie hackers, I dream of and experiment with different product ideas every now and then.&lt;/p&gt;
&lt;p&gt;
Five years ago, in 2018, I toyed with an idea where &lt;strong&gt;personas&lt;/strong&gt; and &lt;strong&gt;expressions&lt;/strong&gt; are the enablers for showcasing people’s talents and interests.&lt;/p&gt;
&lt;p&gt;
I called it, &lt;strong&gt;Persumi&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
The Origin&lt;/h2&gt;
&lt;p&gt;
The original idea was to break the pattern of modern day social media platforms like Facebook, Instagram and Twitter, where every person is hidden behind a two-dimensional facade. Words and photos are often used to skew the way people see who we are.&lt;/p&gt;
&lt;p&gt;
After a while, everything becomes bland as information is being overloaded and people’s attention span starts to decrease drastically. The signal to noise ratio is so low that more and more algorithms and tracking are invented to help curate content so advertisers would keep spending their dime on those social media platforms.&lt;/p&gt;
&lt;p&gt;
It’s a vicious cycle. There is now even a term for it: &lt;a href=&quot;https://knowyourmeme.com/memes/enshittification&quot;&gt;&lt;strong&gt;enshittification&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
Enshittification is when an online platform becomes more monetized and less user-oriented the longer it lasts.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
The Goals&lt;/h2&gt;
&lt;p&gt;
With Persumi, personas and expressions are the key concepts to modernise content creation, curation and consumption in a simple yet meaningful way.&lt;/p&gt;
&lt;p&gt;
I set out a few goals for Persumi, in the hope to change the social media landscape for the better:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
Find ways to encourage the creation and consumption of long form content  &lt;/li&gt;
  &lt;li&gt;
Make it easy for people to create vastly different topics without confusing their audiences  &lt;/li&gt;
  &lt;li&gt;
Make it easy for people to follow different topics, rather than relying on following users  &lt;/li&gt;
  &lt;li&gt;
Allow people to decorate their pages with their own personality and style via HTML + CSS, &lt;em&gt;bring back &lt;a href=&quot;https://en.wikipedia.org/wiki/Myspace&quot;&gt;MySpace&lt;/a&gt;!&lt;/em&gt;  &lt;/li&gt;
  &lt;li&gt;
An API-driven, open marketplace that allows developers to build and extend advanced functionalities  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Some example use cases outlined in my original “pitch deck”:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
&lt;strong&gt;social personas&lt;/strong&gt; for friends, family, work…  &lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;interest personas&lt;/strong&gt; as a gamer, traveller, photographer…  &lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;functional personas&lt;/strong&gt; for travel plan, marketing campaign…  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
It kind of makes sense, but there is one problem.&lt;/p&gt;
&lt;h2&gt;
The Problem&lt;/h2&gt;
&lt;p&gt;
The age-old “chicken-and-egg” problem of starting a platform that thrives on user-generated content - how do I get early-adopter users without a decent amount of users and content already?&lt;/p&gt;
&lt;p&gt;
These goals might be nice, but they probably aren’t enough to convince users to drop what they are used to for something experimental and without users or traction.&lt;/p&gt;
&lt;p&gt;
So I parked this idea…&lt;/p&gt;
&lt;h2&gt;
Revisit the Problem&lt;/h2&gt;
&lt;p&gt;
A few years have gone by, and with a whole pandemic thrown into the mix, this Persumi idea has all of a sudden awakened me yet again.&lt;/p&gt;
&lt;p&gt;
In early 2023, after wrapping up my last freelancing project I decided to tackle Persumi’s chicken-and-egg problem once more.&lt;/p&gt;
&lt;p&gt;
I reflected on how my own content consumption behaviour has changed over the past few years. Instead of reading physical books, e-books or blogs, I consume more and more podcasts and audio-books. Instead of consuming content fully concentrated, I often consume them while on the go or during my workouts.&lt;/p&gt;
&lt;p&gt;
Then a light bulb moment occurred - I don’t &lt;em&gt;need&lt;/em&gt; to build a massive social network platform to compete with the likes of Twitter. I just need to build a “simple” blogging platform for my own use and my own content. If I find it useful, other people will find it useful too. It doesn’t need to go viral, it just needs to be steadly discovered by like-minded people who share my frustration and vision in content creation and consumption.&lt;/p&gt;
&lt;h2&gt;
Iterate the Idea&lt;/h2&gt;
&lt;p&gt;
With a few more years of experience of leading teams and building products under my belt, I thought about how to iterate on the original idea, and came up with three main “twists” if you will:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;
Long form text content needs to be consumable in audio form, to suit the modern lifestyle  &lt;/li&gt;
  &lt;li&gt;
An API-driven open marketplace is way too ambitious for a new platform, build the core concept first, then iterate  &lt;/li&gt;
  &lt;li&gt;
An aura system that helps in both curating content as well as driving away bad actors  &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The rest of the original goals are still as relevant as before. In hindsight, these are pretty obvious product direction pivots, the result is an MVP that builds on a simple core concept - &lt;strong&gt;to turn long form text content into audio&lt;/strong&gt;. And to make it easy to organically grow the platform and audience.&lt;/p&gt;
&lt;h2&gt;
Build a Sustainable Business&lt;/h2&gt;
&lt;p&gt;
With the chicken-and-egg problem behind me, it’s time for me to think about how to build a sustainable business to support my product ambition.&lt;/p&gt;
&lt;p&gt;
Interestingly, in Feb/March 2023, I was thinking about what the VC funding model did to the social media platforms we all love and hate, and why it’s a bad idea. The fact that then &lt;em&gt;during&lt;/em&gt; the short few months of developing Persumi, both Twitter and Reddit seemed to be actively imploding themselves just proved my initial hypothesis:&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;To build a truly user-oriented platform, it needs to be built for users and content creators, rather than investors and advertisers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
That means, no obnoxious ads, no annoying pop ups, every visitor can view content without being forced to sign in, etc, etc… We do what VC-backed companies don’t.&lt;/p&gt;
&lt;p&gt;
If you’ve seen the &lt;a href=&quot;/&quot;&gt;landing page&lt;/a&gt; then you probably would have noticed a few things either available now or later to help create more value for users, such as:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
The hero feature - AI audio, will be a paid feature, however, every user will be able to listen to audio posts, as well as to preview their own content with audio  &lt;/li&gt;
  &lt;li&gt;
Advanced expressions such as HTML and CSS for those who want to customise their pages to their own style  &lt;/li&gt;
  &lt;li&gt;
Ad-revenue share and paid subscribers - coming later, to make Persumi a platform that shares its success with content creators  &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Keep on Building&lt;/h2&gt;
&lt;p&gt;
The MVP was essentially built in three months in my spare time. It wasn’t easy juggling between having a day job as a CTO, and moonlighting on my side hustle every evening and weekend.&lt;/p&gt;
&lt;p&gt;
This is just the beginning. I have many things planned for Persumi, some of which are already mentioned on the landing page, but there are much more to come. Early alpha and beta users are also able to help shape what this platform can become.&lt;/p&gt;
&lt;p&gt;
In the next week or two I will write about &lt;em&gt;how&lt;/em&gt; I managed to build Persumi in three months - the tech choices, architecture and feature prioritisation I went through to make this product a reality.&lt;/p&gt;
&lt;p&gt;
Like what you’ve read or listened to? Why not &lt;a href=&quot;/auth/register&quot;&gt;sign up&lt;/a&gt; and try the platform yourself, the Pro plan is free during the alpha and beta testing stages. Also check out Persumi’s founder &lt;a href=&quot;/u/fredwu&quot;&gt;@fredwu’s profile here&lt;/a&gt; to see what personas and expressions look like and can achieve.&lt;/p&gt;
&lt;p&gt;
Update: Read about &lt;a href=&quot;how-i-built-a-mostly-feature-complete-mvp-in-3-months-whilst-working-full-time&quot;&gt;How I Built a Mostly Feature-Complete MVP in 3 Months Whilst Working Full-Time&lt;/a&gt;, it covers the features, the tech stack, the global infrastructure and the machine learning…&lt;/p&gt;
]]&gt;</content>
    <published>2023-07-17T04:18:07.386547Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/c/persumi/u/fredwu/p/welcome-to-persumi-a-modern-platform-for-content-creation"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/c/persumi/u/fredwu/p/welcome-to-persumi-a-modern-platform-for-content-creation</id>
    <title>Welcome to Persumi - A Modern Platform for Content Creation</title>
    <updated>2023-07-17T04:18:07.386547Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
In 2010 I set up this blog on &lt;a href=&quot;https://tumblr.com&quot;&gt;Tumblr&lt;/a&gt; mostly due to the ease of publishing and not having to worry about the hosting. I also went through two design iterations done in Photoshop:&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/2019-01-20/blog-layouts.png&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
You can probably tell that these designs were done before the flat and minimalist design trend we are seeing in recent years.&lt;/p&gt;
&lt;p&gt;
As I decided to revamp my blog once again, I thought I’d use &lt;a href=&quot;https://www.sketchapp.com/&quot;&gt;Sketch&lt;/a&gt; this time around and aim for a simpler, cleaner and more mature design approach that’s quicker to design and to build. And this is exactly what I did:&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/2019-01-20/sketch.png&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
Thanks to Sketch, the design process was much better than I would’ve had in Photoshop.&lt;/p&gt;
&lt;h2&gt;
Why the Revamp?&lt;/h2&gt;
&lt;p&gt;
A big part of the reason for the blog revamp was to move away from Tumblr, now that it is part of the dying &lt;a href=&quot;https://yahoo.com&quot;&gt;Yahoo!&lt;/a&gt;, and to invest in modern technologies to make the blog function better by adding responsive design and a proper grid system, etc.&lt;/p&gt;
&lt;p&gt;
As I was reading up on and researching technologies as I often do, I came across &lt;a href=&quot;https://www.gatsbyjs.org/&quot;&gt;Gatsby&lt;/a&gt;, and I was immediately convinced that this was going to power my new blog as it appears super fast (by building static content and pre-fetching), is based on &lt;a href=&quot;https://reactjs.org/&quot;&gt;React&lt;/a&gt; and has &lt;a href=&quot;https://www.gatsbyjs.org/docs/plugins/&quot;&gt;a huge collection of useful plugins&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
At work I often joke about how I hate JavaScript (&lt;code class=&quot;inline&quot;&gt;rm -rf node_modules&lt;/code&gt; anyone?), the truth is I started off my career doing a lot of JavaScript, &lt;a href=&quot;https://github.com/fredwu/jquery-endless-scroll&quot;&gt;my most popular open source library&lt;/a&gt; by GitHub star count is in JavaScript, and I have always worked as a full stack dev until recent years.&lt;/p&gt;
&lt;p&gt;
Due to the shift of my responsibilities more into leadership over the past few years, I have opted to focus more on the backend, but deep down I love software in general and given the frontend scene has seen some major improvements in the past few years, not to mention that at work we have several React code bases, it’s time I dig my teeth into it again.&lt;/p&gt;
&lt;p&gt;
Disclaimer: until recently I had only done two React projects before and my exposure to ES6 has been somewhat limited.&lt;/p&gt;
&lt;h2&gt;
Gatsby&lt;/h2&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/2019-01-20/gatsby.png&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
The thing about Gatsby that impressed me the most is how fast it is due to its out-of-box support for pre-fetching. With a wealth of different &lt;a href=&quot;https://www.gatsbyjs.org/starters/&quot;&gt;starter templates&lt;/a&gt; it is also very easy to hit the ground running. I used &lt;a href=&quot;https://www.gatsbyjs.org/starters/netlify-templates/gatsby-starter-netlify-cms/&quot;&gt;gatsby-starter-netlify-cms&lt;/a&gt; as it supports &lt;a href=&quot;https://www.netlify.com/&quot;&gt;Netlify&lt;/a&gt; and is fairly simple.&lt;/p&gt;
&lt;h2&gt;
Export Tumblr Posts&lt;/h2&gt;
&lt;p&gt;
First thing first, I will need to export all my tumblr posts into Markdown files so that Gatsby can consume them. There are heaps of such tools including &lt;a href=&quot;https://tumblr.zendesk.com/hc/en-us/articles/360005118894-Export-your-blog&quot;&gt;Tumblr’s own export functionality&lt;/a&gt;. I ended up having to use these two:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
&lt;a href=&quot;https://import.jekyllrb.com/docs/tumblr/&quot;&gt;Jekyll importer&lt;/a&gt; for converting all Tumblr posts into Markdown  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://github.com/bbolli/tumblr-utils&quot;&gt;tumblr-utils&lt;/a&gt; for downloading all images in the posts (Tumblr’s own export tool and many others only download images hosted on Tumblr)  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Of course, many search-and-replace as well as manual massaging were required to get the new Markdown files to a useable state.&lt;/p&gt;
&lt;h2&gt;
Add More Gatsby Plugins&lt;/h2&gt;
&lt;p&gt;
The starter template was great, but I needed more functionalities so I ended up adding these over time:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-plugin-styled-components/&quot;&gt;gatsby-plugin-styled-components&lt;/a&gt; for supporting &lt;a href=&quot;https://www.styled-components.com/&quot;&gt;Styled Components&lt;/a&gt;  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-remark-embed-video/&quot;&gt;gatsby-remark-embed-video&lt;/a&gt; for embedding videos  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-remark-prismjs/&quot;&gt;gatsby-remark-prismjs&lt;/a&gt; for syntax highlighting  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-awesome-pagination/&quot;&gt;gatsby-awesome-pagination&lt;/a&gt; for pagination  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-remark-reading-time/&quot;&gt;gatsby-remark-reading-time&lt;/a&gt; for adding reading time  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-plugin-feed/&quot;&gt;gatsby-plugin-feed&lt;/a&gt; for RSS feed  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-plugin-google-analytics/&quot;&gt;gatsby-plugin-google-analytics&lt;/a&gt; for Google Analytics  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-redirect-from/&quot;&gt;gatsby-redirect-from&lt;/a&gt; for page redirects (of old Tumblr pages)  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-plugin-sitemap/&quot;&gt;gatsby-plugin-sitemap&lt;/a&gt; for sitemaps  &lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-plugin-robots-txt/&quot;&gt;gatsby-plugin-robots-txt&lt;/a&gt; for &lt;code class=&quot;inline&quot;&gt;robots.txt&lt;/code&gt;  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Using many of these plugins only requires you to add the plugin itself and some config, then off you go - it could not be any easier!&lt;/p&gt;
&lt;h2&gt;
GraphQL&lt;/h2&gt;
&lt;p&gt;
One other reason why I was interested in Gatsby was because of its &lt;a href=&quot;https://www.gatsbyjs.org/docs/querying-with-graphql/&quot;&gt;out-of-box support&lt;/a&gt; for &lt;a href=&quot;https://graphql.org/&quot;&gt;GraphQL&lt;/a&gt;. I came across GraphQL a while back but never had the chance to work with it. &lt;a href=&quot;https://www.ourxplor.com/&quot;&gt;At work&lt;/a&gt; one of our projects started using GraphQL and the team behind it rates it highly, so I really wanted to get some first hand experience using it.&lt;/p&gt;
&lt;p&gt;
With the inclusion of &lt;a href=&quot;https://github.com/graphql/graphiql&quot;&gt;GraphiQL&lt;/a&gt; the in-browser GraphQL IDE, the GraphQL experience in Gatsby is extremely simple and satisfying.&lt;/p&gt;
&lt;h2&gt;
Querying Data using Gatsby’s Page Components and StaticQuery&lt;/h2&gt;
&lt;p&gt;
It’s been a bit of journey.&lt;/p&gt;
&lt;p&gt;
The starter template I used has GraphQL queries in the page components, but I wanted the GraphQL queries in shareable components so I opted to using Gatsby’s &lt;a href=&quot;https://www.gatsbyjs.org/docs/static-query/&quot;&gt;StaticQuery&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
Until I decided to add &lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-awesome-pagination/&quot;&gt;gatsby-awesome-pagination&lt;/a&gt; which requires the GraphQL queries to have variables therefore &lt;a href=&quot;https://github.com/gatsbyjs/gatsby/issues/9047&quot;&gt;incompatible with StaticQuery&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
Despite the back and forth between page components and &lt;code class=&quot;inline&quot;&gt;StaticQuery&lt;/code&gt;, I still loved the GraphQL experience in Gatsby.&lt;/p&gt;
&lt;h2&gt;
It’s All Just React (In a Good Way)&lt;/h2&gt;
&lt;p&gt;
The great thing about Gatsby is that despite making things easier by including a bunch of useful functionalities and plugins, down to its core, everything is based on &lt;a href=&quot;https://reactjs.org/docs/components-and-props.html&quot;&gt;React Components&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
What this means is that as long as you have a working knowledge of React and React Components, extending Gatsby’s capability is simple and straightforward.&lt;/p&gt;
&lt;h2&gt;
CSS Powered by Bulma&lt;/h2&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/2019-01-20/bulma.png&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
The starter template also includes &lt;a href=&quot;https://bulma.io/&quot;&gt;Bulma&lt;/a&gt; - a modern and popular CSS framework.&lt;/p&gt;
&lt;p&gt;
Until now I’ve always relied mostly on &lt;a href=&quot;https://getbootstrap.com/&quot;&gt;Bootstrap&lt;/a&gt; so it’s nice to get to experience another CSS framework. And it turns out, Bulma is quite nice and easy to use too.&lt;/p&gt;
&lt;p&gt;
Thanks to Bulma, supporting responsive design was a breeze.&lt;/p&gt;
&lt;h2&gt;
Gotcha: CSS Rules and “gatsby-plugin-purgecss”&lt;/h2&gt;
&lt;p&gt;
&lt;a href=&quot;https://www.gatsbyjs.org/packages/gatsby-plugin-purgecss/&quot;&gt;gatsby-plugin-purgecss&lt;/a&gt; is included as part of the starter template to reduce the size of the CSS files by removing unused CSS rules. It’s wonderful as it saves about &lt;code class=&quot;inline&quot;&gt;200Kb&lt;/code&gt; of CSS (before minifying and gzipping) from unused rules from Bulma.&lt;/p&gt;
&lt;p&gt;
One gotcha I soon realised though, is that it also purges any CSS rules that are only rendered in the Markdown components. My guess is that the purging happens before the static contents were rendered therefore it cannot detect them.&lt;/p&gt;
&lt;p&gt;
The fix was quite simple, given that by default it only purges the main css file (in my case, &lt;code class=&quot;inline&quot;&gt;all.scss&lt;/code&gt;), and all the specific rules in this file were defined by me, all I had to do was to add the comment lines to tell the plugin not to purge these rules:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;scss language-scss&quot;&gt;@import &quot;~bulma&quot;;

/* purgecss start ignore */
.my-own-css-rules-here {
}
/* purgecss end ignore */&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;
Gotcha: CSS Conflicts Between Bulma and Prism.js&lt;/h2&gt;
&lt;p&gt;
One more issue with CSS was the conflicts between Bulma and &lt;a href=&quot;https://prismjs.com/&quot;&gt;Prism.js&lt;/a&gt; due to the way some of the CSS rules are defined in Bulma.&lt;/p&gt;
&lt;p&gt;
What I had to do was to “reset” those CSS rules so they can inherit from Prism.js instead:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;scss language-scss&quot;&gt;.content {
  .number,
  .tag {
    align-items: inherit;
    background-color: inherit;
    border-radius: inherit;
    color: inherit;
    display: inherit;
    font-size: inherit;
    height: inherit;
    justify-content: inherit;
    line-height: inherit;
    margin-right: inherit;
    min-width: inherit;
    padding: inherit;
    text-align: inherit;
    vertical-align: inherit;
    white-space: inherit;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;
Netlify: Deployment and Hosting Made Easy (and Free!)&lt;/h2&gt;
&lt;p&gt;
Before Netlify and similar services were available, many people used &lt;a href=&quot;https://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt; to host their static content sites. It worked reasonably well but in the end this isn’t GitHub’s core competency and the features are limited.&lt;/p&gt;
&lt;p&gt;
Netlify takes deployment of static content sites to &lt;a href=&quot;https://www.netlify.com/github-pages-vs-netlify/&quot;&gt;a whole new level&lt;/a&gt; and I cannot be happier to have finally jumped on the bandwagon too.&lt;/p&gt;
&lt;h2&gt;
Closing&lt;/h2&gt;
&lt;p&gt;
Suffice to say, I am very satisfied with this revamp experience - Sketch, Gatsby, GraphQL, Netlify and many other software have made it a walk in the park.&lt;/p&gt;
&lt;p&gt;
It only took me around 50 hours to get to 99%, and a few hours more to add in things like &lt;a href=&quot;https://github.com/disqus/disqus-react&quot;&gt;Disqus&lt;/a&gt; and &lt;a href=&quot;https://github.com/nygardk/react-share&quot;&gt;social sharing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
Oh, and for those who are curious, the source code of this blog is &lt;a href=&quot;https://github.com/fredwu/fredwu.me-v3&quot;&gt;available on GitHub here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
Let me just say:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;
The last time I fell in love with JavaScript was when &lt;a href=&quot;https://jquery.com/&quot;&gt;JQuery&lt;/a&gt; first came to the scene many moons ago. Ever since then I dread working on the JS stack mostly because I’ve been spoiled by the Ruby and Elixir ecosystems. It’s nice to fall in love JavaScript again after so many years of simply “getting by”.  &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
I hope you like my new blog, and if you have a similar experience to share, I’d love to hear from you!&lt;/p&gt;
]]&gt;</content>
    <published>2019-01-20T11:27:22.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/new-blog-with-new-design-and-gatsby-js-loving-javascript-again"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/new-blog-with-new-design-and-gatsby-js-loving-javascript-again</id>
    <title>New Blog with New Design and Gatsby.js - Loving JavaScript Again</title>
    <updated>2019-01-20T11:27:22.000000Z</updated>
  </entry>
  <entry>
    <content type="html">&lt;![CDATA[&lt;p&gt;
After four days of sketching, designing and cutting up HTML/CSS, the new design (as you are seeing now) is finally live!&lt;/p&gt;
&lt;p&gt;
The new design is structurally similar to &lt;a href=&quot;/blog/2010-03-02-blog-redesigned/&quot;&gt;the old design&lt;/a&gt;, but with a fresh header and better use of space.&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_lwtph23mnm1qalr27.png&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
A new year warrants a fresh start. Apart from the redesign, I have also started heading up the development effort at &lt;a href=&quot;http://sitepoint.com/&quot;&gt;SitePoint&lt;/a&gt; - dozens of interesting and challenging projects ahead!&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&quot;https://cdn.persumi.com/uploads/images/posts/1ee22517-8bfc-676a-b1f2-ce61dc92750f/imported/img/posts/old/tumblr_lwtpuklt5o1qalr27.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
2012 will be an awesome year! :)&lt;/p&gt;
]]&gt;</content>
    <published>2011-12-26T18:28:29.000000Z</published>
    <category label="Blog" scheme="http://persumi.com/u/fredwu/tech/e/blog" term="blog"/>
    <category label="Tech" scheme="http://persumi.com/u/fredwu/tech" term="tech"/>
    <link href="http://persumi.com/u/fredwu/tech/e/blog/p/blog-redesigned-for-2012-and-new-challenges-ahead"/>
    <author>
      <name>Fred Wu</name>
      <email>ifredwu@gmail.com</email>
      <uri>http://persumi.com/u/fredwu</uri>
    </author>
    <id>http://persumi.com/u/fredwu/tech/e/blog/p/blog-redesigned-for-2012-and-new-challenges-ahead</id>
    <title>Blog Redesigned For 2012, And New Challenges Ahead</title>
    <updated>2011-12-26T18:28:29.000000Z</updated>
  </entry>
</feed>