diff --git a/.config/newsboat/my_urls b/.config/newsboat/my_urls index 2218ec8b..52961ef7 100644 --- a/.config/newsboat/my_urls +++ b/.config/newsboat/my_urls @@ -39,3 +39,5 @@ file://./rss/herman_and_jason.rss file://./rss/knowledge_fight.rss file://./rss/radiolab.rss file://./rss/pluralistic.rss +file://./rss/tech_over_tea.rss +file://./rss/sometechblog.xml diff --git a/.config/newsboat/rss/sometechblog.xml b/.config/newsboat/rss/sometechblog.xml new file mode 100644 index 00000000..e5ae10d2 --- /dev/null +++ b/.config/newsboat/rss/sometechblog.xml @@ -0,0 +1,14 @@ +sometechblog.comhttps://sometechblog.com/Recent content on sometechblog.comHugo -- gohugo.ioenWed, 25 Jan 2023 11:24:30 +0100You might not need an ORMhttps://sometechblog.com/posts/you-might-not-need-an-orm/Wed, 25 Jan 2023 11:24:30 +0100https://sometechblog.com/posts/you-might-not-need-an-orm/While I was building aihelperbot.com I did what I imagine many developers do: I used an ORM for everything database related. I used ORM to handle migrations, define schemas, insert data, update data, select data, etc. I didn’t think much about it. +It was only later while building aihelperbot.com I started to wonder if I really needed an ORM? Using AI more and more I started to realize that I could do most of the things I did with an ORM directly with SQL.Building a markdown blog using NextJS and server side componentshttps://sometechblog.com/posts/building-markdown-blog-using-nextjs-server-side-components/Wed, 04 Jan 2023 14:29:12 +0100https://sometechblog.com/posts/building-markdown-blog-using-nextjs-server-side-components/I wanted to add markdown blog to my NextJS app. Initially I feared it would be a lot of work. But it turned out to be easy when using NextJS server side components, i.e. the appDir. This is the end result: +blog overview blog post To get started I added the scaffolding for the markdown blog to the appDir: +app/ ├── posts/ │ ├── [slug] │ │ ├── head.Render vs Digitalocean pricing in 2023https://sometechblog.com/posts/render-vs-digitalocean-2023/Tue, 03 Jan 2023 21:12:27 +0100https://sometechblog.com/posts/render-vs-digitalocean-2023/What does it cost to host a small web app on Render vs Digitalocean with Render’s new pricing model? The tech stack: +web app running Node.js database running Postgres (Render only support Postgres) Service Render DigitalOcean Node (1CPU/1GB Ram) $25/mo $25/mon Database (1CPU/1GB Ram) $20/mo $15/month Autoscaling $19/mo 0 Bandwidth 500GB in total (additional $30 per 100GB or $3.Render's new dual track pricing scheme doubles hosting costshttps://sometechblog.com/posts/render-new-dual-track-pricing-schema-doubles-hosting-costs/Mon, 02 Jan 2023 18:53:34 +0100https://sometechblog.com/posts/render-new-dual-track-pricing-schema-doubles-hosting-costs/Render adopted a new pricing scheme for its services on 1st of January 2023. And like DigitalOcean they market it as “predictable pricing” however unlike DigitalOcean it isn’t simple anymore. Render now charges both for its services and per user. The specific user pricing then in turns depends on “group type”, e.g. individual, team or organization. +It is only a price increase while Render’s offerings remains the same. Or that is not exactly true as users in the “individual group” loose autoscaling, which is an important tool to keep cost low for indiehackers and small startups that experience jumps in traffic.How to dynamically load Stripe with NextJShttps://sometechblog.com/posts/how-to-dynamically-load-stripe-with-nextjs/Sat, 10 Dec 2022 17:14:32 +0100https://sometechblog.com/posts/how-to-dynamically-load-stripe-with-nextjs/I was checking the performance of one of my web sites using Page Speed and noticed it complained about assets loading slowly as well as the initial response time from the server being a bit long (500ms-700ms range). My first thought was that it might be the database queries being too slow. I quickly ruled that out (they all took in the vicinity of a few milliseconds). +Then I noticed Stripe was loading on each page load.Macbook Air M1https://sometechblog.com/posts/macbook-air-m1/Thu, 11 Nov 2021 14:56:14 +0100https://sometechblog.com/posts/macbook-air-m1/I had no idea what would happen to me that day. It was my last day working for a client in Berlin. I came to the office to work and have a small goodbye party on the sunny terrace. This was the first time in the psychical office, before that I have, like almost everybody else, been working from home. +I had bought my laptop just a year before. It was the most expensive Macbook Pro 16” with 8 Intel CPU cores and it costed 3600 €.Setup Sublime Editor for Writinghttps://sometechblog.com/posts/setup-sublime-for-writing/Sat, 10 Apr 2021 14:57:48 +0200https://sometechblog.com/posts/setup-sublime-for-writing/Sublime Editor is build for writing and reading code. However the urge to write down your thoughts on different matters might come and for this Sublime Editor offers excellent support. Both out of the box and with a few useful packages. +Opposite to coding, where concise code blocks and programing logic becomes more readable through highlighting and linting tools, writing is easier with fewer colors, larger text and line height.Redux is too complexhttps://sometechblog.com/posts/redux-is-complex/Mon, 05 Apr 2021 15:31:27 +0200https://sometechblog.com/posts/redux-is-complex/Redux is a popular library used to manage global application state, at least the claim. Lots of developers struggle to understand what Redux does and how to use it properly. When saying global state most developers would intrinsically imagine a simple library lifting up individual states into a shared global object. This isn’t Redux. Although Redux is a small library (2kB, including dependencies), the documentation and the complimentary libraries required makes it comprehensive.Questions to ponder before a JS job interviewhttps://sometechblog.com/posts/reflections-on-js-development/Tue, 12 Jan 2021 16:44:21 +0100https://sometechblog.com/posts/reflections-on-js-development/It’s that time again where I have to prepare for job interviews. Since companies aren’t looking quirky originals, you need to learn what to say to look attractive. And have some answers to the common questions. +How do you approach complex problems? There isn’t one approach since complex problems are different. Here are some common ones: +structural/architectural problems as the application matures should be handled together with the team, since everyone has a stake in the app and should be heard.You don't need a boilerplate for Next.js and Prismahttps://sometechblog.com/posts/nextjs-prisma/Fri, 08 Jan 2021 16:09:48 +0100https://sometechblog.com/posts/nextjs-prisma/Originally the plan was to get familiar with Next.js and Prisma by making a simple boilerplate for it. Turns out a few commands is all it takes to generate a basic working app. Let’s get started and add Next.js: +npx create-next-app my-app To add Typescript run touch tsconfig.json && yarn dev and Next.js will generate the needed files and install packages. Then add Prisma: +yarn add -D @prisma/cli yarn prisma init Prisma created a .Lightweight and flexible React hook to animate height changehttps://sometechblog.com/posts/height-animation-hook/Mon, 05 Oct 2020 00:00:00 +0000https://sometechblog.com/posts/height-animation-hook/Hiding or showing a element with React is as simple as an if statement deciding whether to print it or not. However often you want to be able to animate the transition, so that it smoothly closes or opens. To avoid cluttering the various components with this animation logic, extract the logic into a hook: +/** * Returns the variables needed to animate a open and close functionality via height * @param {Boolean} isOpen: boolean is the element initially open * @param {Number} duration: number duration in ms */ function useHeightAnimation(isOpen = false, duration = 350) { const contentRef = React.AbortController with redux-thunk and redux-sagahttps://sometechblog.com/posts/abort-controller-redux/Thu, 09 Jul 2020 00:00:00 +0000https://sometechblog.com/posts/abort-controller-redux/Features that allow the user to fire multiple requests quickly and where only the latest request is relevant, should build in an abort controller. A typical example of this is a search filter allowing the user to quickly select and deselect filters. With each clicked filter the application will fire another request to server and update the search results. As requests for previously selected filters are irrelevant, it makes no sense for the browser trying to resolve them all.Deploying Gatsby on a VPShttps://sometechblog.com/posts/deploying-gatsby-on-vps/Fri, 10 Apr 2020 00:00:00 +0000https://sometechblog.com/posts/deploying-gatsby-on-vps/Although it is clearly not in fashion at the moment, deploying websites on a VPS (virtual private server) or regular server for that matter, without any containerization and orchestration is both fast and easy. I have been running my private VPS (with Ubuntu 16.06) for years without much sweat. Using the command line to install and configure a server is both easy and powerful once you know the basic. No need to bother with a fancy UI layer or the limitions it often imposes. \ No newline at end of file diff --git a/.config/newsboat/yt_list b/.config/newsboat/yt_list index cf9761af..718ed679 100644 --- a/.config/newsboat/yt_list +++ b/.config/newsboat/yt_list @@ -74,6 +74,7 @@ ContraPoints Corey Schafer Craft Computing Cracked +Creel CryZENx CS Dojo cs631apue @@ -226,6 +227,7 @@ Michael White Dev MIT OpenCourseWare Mitch Davis Mitchell Talks Too Much +moar munecat Modus Create,LLC Mottasem Hamdan Mozilla Developer diff --git a/.config/newsboat/yt_urls b/.config/newsboat/yt_urls index 7d1af580..eee4281d 100644 --- a/.config/newsboat/yt_urls +++ b/.config/newsboat/yt_urls @@ -12,6 +12,7 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UCLNgu_OupwoeESgtab33CCw https://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA https://www.youtube.com/feeds/videos.xml?channel_id=UCNvsIonJdJ5E4EXMa65VYpA https://www.youtube.com/feeds/videos.xml?channel_id=UCp3yVOm6A55nx65STpm3tXQ +https://www.youtube.com/feeds/videos.xml?channel_id=UCq7dxy_qYNEBcHqQVCbc20w https://www.youtube.com/feeds/videos.xml?channel_id=UCxX9wt5FWQUAAz4UrysqK9A https://www.youtube.com/feeds/videos.xml?channel_id=UCYNrBrBOgTfHswcz2DdZQFA https://www.youtube.com/feeds/videos.xml?channel_id=UCP7WmQ_U4GB3K51Od9QvM0w @@ -77,6 +78,7 @@ https://www.youtube.com/feeds/videos.xml?channel_id=UCEDkO7wshcDZ7UZo17rPkzQ https://www.youtube.com/feeds/videos.xml?channel_id=UCPyST5UFOezhL7cErL0Zysw https://www.youtube.com/feeds/videos.xml?channel_id=UCaiL2GDNpLYH6Wokkk1VNcg https://www.youtube.com/feeds/videos.xml?channel_id=UCEBb1b_L6zDS3xTUrIALZOw +https://www.youtube.com/feeds/videos.xml?channel_id=UCsuZ2L0Q6y-xVd18HhZegyg https://www.youtube.com/feeds/videos.xml?channel_id=UCNSdU_1ehXtGclimTVckHmQ https://www.youtube.com/feeds/videos.xml?channel_id=UC5nc_ZtjKW1htCVZVRxlQAQ https://www.youtube.com/feeds/videos.xml?channel_id=UCqNpjt_UcMPgm_9gphZgHYA