Headless CMS is not a golden hammer

Headless CMS is defenitelly the option number one for developers as it gives freedom to choose tools you love too but ... not all content editors will enjoy that way. People who used to work with WYSIWYG editors may have bad times tryiing to change own habbits. storyblok.com is trying to solve that issue providing tools supporting content editing ❤️ (+ awesome NextJS integration guide 🙇‍♂️)

Mess in team/department documentation?

do not panic 😨

The most important question is: why you need documentation? Do you want to secure knowledge that can be taken with leavers? Is that a tool to share knowledge better? Do you want to make new employees onboarding process much easier? Maybe it's required by stakeholders? Documentation generates costs and before you will decide to make documentation ensure that it's pragmatic. The biggest challenge is to keep documentation up to date. There is nothing more annoying than thousands of outdated documents. Few tips that can be useful:

  • secure time/resources to review documentation (i wish to have it obvious everywhere)
  • build company habit to tag documents that seem to be outdated or should be archived - you will quickly collect a list of documents that need to be reviewed, it also gives a hint for other employees to be careful before the document will be reviewed
  • find out how often specific documents are used (it can be retrieved e.g. from Google Docs API), prioritize review process for documents that are most often used and archive those that are not used at all. You will find out that some of the documents are not used but should be 😎
  • make a contribution to the documentation review process as a part of employee assessments
  • verify each new document by a person who will need to use that (e.g. if you describe a production update process - ask the developer who never did that to follow documentation)

Need more beatiful (vector) graphic for designs?

here are next two extremly popular sources

A picture is worth a thousand words 📷. So here you have really nice source of free (vector) pictures: drawkit.io and undraw.co 🎁. It helped me to build landing page for Gruv Traning side project from scratch in a matter of 2 hours.

Responsively ❤️

awesome tool for web development

Thanks to https://responsively.app checking how webpage looks on different screen sizes is waaay faster 🚀 Mirrored interactions makes it really useful 🧨

responsively app displaying Mailchimp website

Gruv Traning after pivot - POC ready to collect first feedback from users 😱

Finally, 48 days after Gruv Training pivot, Proof Of Concept is ready for first validation with users 🎉. It's time to leave keyboard for a while ⌨️, meet people who may using Gruv and 👂👂👂

Chrome and HTML5 video seekbar issue

What is not clearly described in the documentation, to use html5 video seekbar functionality in Chrome or possibility to mutating currentTime property your server needs to support HTTP Range Requests. Here simple explanation how to handle that using nodeJs with streams.

Page that everyone should know

Unsplash - a countless number of beautiful ❤️ high resolutions photos 📷 with a copyright license to download, copy, modify, distribute, perform, and use including commercial purposes 🎉That's what i needed for next landing page design 👹

Does Redux and state managment need to be so complicated? 😕

Redux settled down in many software developers toolset but does state management need to be soo complicated? Well, looking at Recoil I think that it may be a much better way 😲. Time to test it in next POC project 😁...

Retrospective meeting online? Why not!

How we could organize online retrospective meetings without https://metroretro.io/ 🤔? Tested in real life and looks like it will join our toolset for much longer 😍

POC/MVP and mobile appliaction

Lesson learned 👩‍🎓 - if possible, try to avoid building native mobile application for POC (Proof of Concept) or MVP(Minimum Valuable Product). React native or Kotlin are fancy to play with but at the end building/testing/deploying loop is much slower than just a web application or even PWA (Progressive Web App). Remember, the speed of idea validation is the king! 🚀

Corona Pivot

Because of coronavirus, all group events are shut down so...it's not a good time to develop early-stage startup Gruv Training that target trainers who lead group exercise classes 😒. Eight months of work need to wait for better times ... I'm much more confident in React Native at least. Officially: first official pivot ... we will try support trainers in online activities 🎉 Stay tuned ...

Finally, "todo" app that works for me

After 10 years and many tries with Todoist, Trello, Google Keep, Evernote and dozen of physical paper notes I found a "todo" app that is perfect for me 🎉 Notion 🎉 Well, it's not only a "todo" app ... anyway, it made my life much easier. Good job!

Don't make this mistake 😖

Think twice before you decide to make some of your features in mobile app working offline. Sync complexity (e.g. merge two changes made offline) is not something you want to deal with at the early startup stage. Question for the evening: complete what started or simplify 🤔?

Dark side of TypeScript 🌗

Remember, before you will decide to add TypeScript to an existing project - it's an additional layer on top of JavaScript. Sometimes it may be not so straight forward as you expect. I have 3 projects in a configuration expressjs + nextjs (SSR) and in one of them ts-node made our application 6 times slower and still have not to figure out why 😢. You can compile a project for production (tsc) once in a while but you still want to have quick development hot reload environment 😫

Android app - refresh on scroll to top

Thanks to RefreshControl it was easier than i thought 😄

  import { ScrollView, RefreshControl } from 'react-native';
  // ...
  const refreshing = props.sessions.apiCallStatus === INBUILT_SESSIONS_REQUEST.IN_PROGRESS;
  const onRefresh = useCallback(() => {
  }, [refreshing]);
  return (
      // ...

animation showing RefreshControl in action

Are you afraid that Redux testing is difficult? 😖

You should not, it's simpler than you may think. In this article, I described 3 ways to test Redux store 🎉

Write technical documentation which you would like to read yourself 📕❤

Usually, no one like writing technical documentation 😪 but sometimes we have to. If we do, instead of treating it as a punishment, we can make it awesome. How? Let's start with Technical Writing course by Google.

Preparing for your first product in a subscription model?

I recommend to start form my first article: Chargebee - how to build own subscriptions base product faster🎉. Do you want more like that?

Deploy via FTP

It doesn't need to be boring 🥱 and time consuming process, ftp-deploy can help you automate this process in 10 minutes. I'm using that to deploy static generated pages to dumb server and works really nice. Agile & frequent delivery 🧘‍♂️.

Next.js was awesome, now even better

React using Server Side Rendering or as Static Site Generator? No problem! You can start in a few minutes using Next.js 🎉. Now even better as they clean up API (getStatic(Props|Paths), getServerSideProps) and documentation 🙇‍♂️.

Democracy in startup?

Your biggest adventage can be speed and flexibility 🐱‍👤. If you always have to convince a majority to approve ideas/make experiment/take decision 🤦‍♂️ ... well, for early startup stage strong leader is priceless 😎

Puppeter, Selenium webdriver killer?

If you want to you use NodeJs and it's fine for you to be limited to Chrome/Chromium - choose puppeteer ❤. Puppeteer is much more stable than selenium webdriver with NodeJs, API is more consitent and documentation 10 times more useful.

Unit testing banned? 🤷‍♂️

I'm not going to convince you that unit tests will resolve all your issues and you should always target 95% test coverage. But the hell - sometimes it's really handy tool🔧! If someone banned that in your company - do everything to convience him that it was a mistake. If you can't change that ... you know what to do ✈.

Pomodoro ⏰ as productivity hack?

For me is just a tool 🔧 - need to be used wisely. Pomoro helps me to motivate myself when I have a bunch of boring tickets on the board but from other side it can distract me easly when i'm in the middle of the mission 🐱‍👤

🎹 Is mechanical keyboard must have for a programmer?

After 6 months with Kailh Blue switches i clearly see that mechanical keyboard is not a game changer. I almost don't see typing speed or accuracy difference between mechanical and good membrane keyboard. Over all, most of us do not type soo much. 🔬 Just choose most comfortable for you.

Inmature Expo.io?

I started develop mobile application using React Native and Expo library and still wonder when i will find limitations that will force me to eject application from expo stack 🤔. Single sing on with Google? Expo expo-google-app-auth package is not too popular 😱? Surprisingly, works perfectly fine, stable so far and simple in configuration. Good job Expo 💪.

Conflict-free Replicated Data Type (CRDT)

I recommend to listen Full Stack Radio episod 📻 with James Long about distributed approach to database 🚀. Just wonder how often CRDT will be overenginering for MVP 🤔?

"📕 Blood, Sweat, and Pixels"

by Jason Schreier

You will not find any technical details - for me it's just good set of bedtime 🛏 stories for people interested into software/game development. Well... maybe some pixel art just for relax 🐱‍🐉?

Hidden dragons everywhere 🤦‍♂️

The darkest place is under the candle ... how often we dream about awesome techniques and tools but fail with basic name convection 😥. Now i know why it's one of the first "Clean Code" chapter.

"📕The Power Of Your Subconscious Mind"

by Joseph Murphy

I expected so much (over one million copies sold worldwide 🌍) and so huge disappointment 🤦‍. Really low meat to babble ratio and pseudoscience crap. Worst book i ever read 👹.

React Native + Storybook = ❤

developing UI components in isolation

When i started journey with React Native i struggled with styles 😖 - it was really annoying and time consuming to work on components that are not so quickly accesible 🐢 or could have many different states. What i found out is that Storybook that i know as great tool for Web Applications is also available for React Native! Simple tool that makes work much faster 🚀

Selenium webdriver on AWS EC2

For one project i wanted to run selenium tests after each application update. I had not dedicated server or CI setup so i tried to run that on heroku using https://github.com/heroku/heroku-buildpack-google-chrome and unfortunatelly it was not stable for me - could not connect to chrome randomly 😥. I run that on AWS EC2 using Xvfb and surprisingly works awesome 🎉. By the way: t2.micro instance 🤑! Maybe it was lame and i should try to use AWS Lambda 🤔

App design

You are software developer and your apps looks really bad 😱? Try to create mockups before first line of code - even if you don't have any sense of beauty (like me 🙈) outcome will be much, much better. You don't need advance skills to do that - i believe that everyone can master bascis in few hours ⌚. I work with Adobe Xd - it is doing it's job and is free to download 🎉.

"📕 The one thing"

by Gary Keller with Jay Papasan

What i found valuable in this book (at least to page where i stop reading that 🤭)? Reminded me that we are mortal, our willpower is limited and maybe we should focus on stuff that matters. That sounds little bit like a "lean", doesn't it 🤔? What i'm pretty sure - if it works for software development then definitely it's good lifehack 😂

Poland Independence Day

In 1946 ENIAC, first digital computer was completed ⌨. In the same year, just after World War II destroyed Poland 🔥 struggle with democracy standards when Three Times Yes referendum was manipulated by communist. 73 years later in rankings Software Developers from Poland have 3rd place on the World 🚀🚀🚀. I'm proud of you guys 💪💪💪

Bug of a day

JS, baby - why you make my cry 😥. Because of typeof null === 'object', code like typeof something === 'object' always should be followed by something !== null or !!something. Do we have to use heavy lodash _.isObject(something) to make our code neat and concise?

Redux-presist & migrations

Seriously, no one is using redux-persist for React Native 🤔? If yes how it's possible that documetation is silent about fact that downgrades are not supported and pull request open since May 2018 😤. So more pull request has some errors. Time to create new one ...

New side project

Gruv Training

I'm really happy to announce that together with Arek Stachoń we start new side project - Gruv Training 🥳🎉 Our plan is to help trainers conduct fitness classes 🤸‍♀️🏃‍♂️🏋️‍🏋️‍💪. Great opprotunity to learn little more about fitness industry and play around mobile development 📱.

Payment industry fail

Customer want to pay for a servise so you initialize payment process and you are waiting 10 days ⏰ for confirmation from a Bank that transaction was succesful - 21th century! Watch out for that - almost 2 weeks was not enough to verify transaction and after few days you still can get this trasaction canceled because account has insufficient funds🤯🤯🤯! Sound like old Soviet Union technology 🔨? SEPA Direct Debit fully implemented in 2014 🤐. Just wonder if they still using paper and pen as database 😁?

I'm in heaven

And I seem to find the happiness I seek

Headless CMS - we got back full control on our UI and still giving customer control on content 💪.

Subscription model and operations hell

I have good news for everyone who want's to build application/business that use subscription model. You don't need to waste houndrends of hours on building operations stuff like: user managment, offer configuration, subscriptions, payments, invoices, financial reports etc 😱🤢🤮. On the market exists few tools that handle all that boring & necessery tasks very well. My choose: Chargebee (great API and free for startups). Now you can focus on core of your business/application 🤑.

NodeJs callback hell

Are you working with NodeJs? Experienced callback hell 👿? Writing promise wrappers for extrnal modules to be able use it in async/await functions👏? Respect your time and don't do that manually - util.promisify. If doesn't work for you use promisify with bind to keep this working 😎.

How to fail in Javascript

In JavaScript you can throw anything; strings, numbers, booleans, objects, even other functions. You can does not mean that you should 👹. You have to throw Error object throw new Error("Some error message") to have access to error trace wneh you catch that 🥅.

© Marcin Ślęzak - made with ❤