Author: Tamal

  • মাত্র ১৫ মিনিট কোড করো

    ঘুম থেকে উঠেই ১৫ মিনিট প্রজেক্টে কাজ করবো।

    কোডিং প্রোজেক্ট/ক্লায়েন্ট প্রজেক্ট, যাই হোক যাস্ট ১৫ মিনিট, এর চেয়ে বেশি না।

    এই বলে এডিটরটা ওপেন করলাম, আর আজকে ১৫ এর যায়গায় ৫১ মিনিট কোড করে ফেললাম 😁

    অনেক সময় কোডিং করে কিছু বানানো এমন একটা নেশা যেটা একবার flow state এ চলে গেলে আর ছাড়তে মন চায় না।

    এইভাবে হুট হাট কাজ শুরু করে দেওয়া ভালো।

    মাত্র ২ মিনিট করবো; ৫ মিনিট করবো; যাস্ট এই ফাইলটা চেঞ্জ করবো ইত্যাদি।

    কিন্তু যখনি অনেক আয়োজন করে ভাবি, আজকে ২-৩ ঘন্টা কোড করে ফাটাইয়া ফেলবো, তখন আর সারাদিন এডিটর ওপেন-ই করি না।

    time tracker app: toggl

  • ৩০ দিনে কি প্রোগ্রামিং শিখা সম্ভব?

    এই প্রশ্নের সাথে অনেক গুলা যদি/কিন্তু আছে।

    ৩০ দিন কি শুধুই প্রোগ্রামিং করতে পারবে? আর কোন কাজ, পড়ালেখা, ফ্যামিলি কমিটমেন্ট আছে? যদি থাকে তাহলে হয়তো ৩০ দিনই ফোকাস দেওয়া সম্ভব না।

    তুমি কি তোমার প্রথম প্রোগ্রামিং ল্যাংগুয়েজ শিখছো নাকি ৬ নাম্বারটা শিখছো?

    আমি অলরেডি অনেকগুলা ল্যাঙ্গুয়েজ অনেক বছর ধরে ইউজ করে আসছি। আমার ক্ষেত্রে দেখা যাবে একটা নতুন প্রোগ্রামিং ল্যাঙ্গুয়েজ ১ মাস কেন, ১ সপ্তাহেই শিখে ফেলতে পারবো।

    চলো একটা বাস্তবধর্মী উদাহরন দেইঃ

    আগামি ৩০ দিনে ১০-২০ বার প্রতিদিন ১ ঘন্টা করে যদি Deliberate Practice করো, তাহলে হয়তো এখন যে জিরো লেভেলে আছো, সেখান থেকে অনেক উপরের লেভেলে চলে যেতে পারবে।

    ল্যাংগুয়েজ শেখা আসলে কারো শেষ হয় না। শেষ করতে পারাটাও কোন ক্রেডিট না। সবাই সেই ল্যাংগুয়েজে মোটামুটি অভ্যস্থ হয় যেন সে কিছু বানাতে পারে।

    এইটাই আসল গোল।

  • প্রোগ্রামিং ভালোভাবে করতে হলে ঠিক কেমন ইংরেজী জানতে হবে?

    উত্তরঃ- ভালো ভাবেই জানতে হবে। কেন সেটা বলছিঃ

    প্রায় প্রত্যেকটা মডার্ন ল্যাঙ্গুয়েজেই কিছু বেসিক ইংরেজী ওয়ার্ড আছে, যেমন form, submit, color, background, function ইত্যাদি। এই বেসিক শব্দগুলোর বানান ভূল করলে প্রোগ্রামে Error আসবে, যার ফলে অনেক বিরক্তি লাগবে।

    প্রায় সব প্রোগ্রামিং ল্যাঙ্গুয়েজই case-sensitive অর্থাৎ কোন বানানে বড় হাতের আর ছোট হাতের লেখা মিক্স করলে সেটা সে বুঝতে পারে না। তার মানে যদি ভেরিয়েবল এর নাম থাকে ছোট হাতের অক্ষরে address, আর তুমি রেফারেন্স করেছো বড় হাতের অক্ষরে Address, তাহলে আবার সেখানে Error দেখাবে। বড় হাতের + ছোট হাতের অক্ষরের যে পার্থক্য, সেটা বুঝার ভালো সেন্স থাকতে হবে।

    প্রোগ্রামিং এ প্রায়ই Error আসে। এটা একটা নরমাল ব্যাপার। সেই এররটা পড়ে প্রোগ্রামটা ডিবাগ করা জানতে হবে। তার মানে ইংরেজী লেখা পড়ে বুঝতে পারতে হবে।

    বেশিরভাগ সময় প্রোগ্রামিং এর এরর গুগলে লিখে সার্চ করে তার সলুশন বের করে আনতে হয়। এই ক্ষেত্রে কি সমস্যা হলো, সেটা খুব ভালো ভাবে ইংরেজীতে লিখে উপস্থাপন করা লাগে। তার মানে ইংরেজী ভালো লিখতে পারতেও হবে।

    বেশির ভাগ প্রোগ্রামিং ল্যাঙ্গুয়েজগুলো ইংরেজীতে বানানো হয়েছে, আর তাদের ইউজার কমিউনিটিও ইংরেজীতেই কমিউনিকেট করে। যতদিন না পর্যন্ত বাংলা ভাষায় আরো বড় প্রোগ্রামিং কমিউনিটি তৈরী হচ্ছে, ততদিন পর্যন্ত ইংরেজীতেই কোডিং করতে হবে।

  • হতাশাবাদী মনোভাব বনাম আশাবাদী

    pessimism মানে হতাশাবাদ। সব কিছুর মধ্যে সবচেয়ে খারাপ অবস্থাগুলো দেখা।

    optimism আশাবাদী মনোভাব। আরো ভালো কিছু হবে।

    আমরা ৩ বন্ধু মিলে মাঝে মাঝে পাবজি খেলি। খেলার সময় সবার মনোভাব থাকে, যে আমরা তো খালি হারি। কোন কিল করতে পারি না। শুধু বট মেরেই বাহাদুরি করি। রিয়েল এনেমির সামনে পরলেই মরে যাই।

    Psychology of Money বই এ Morgan Housel বলেন, পেসিমিজম শুনতে রিয়েলিস্টিক এবং ভালো উপদেশ মনে হয়।

    যেমন আমরা গত ১০০ ম্যাচ হেরেছি, এজন্য এখনো হারবো, কথাটা ১০০% বাস্তব মনে হয়। এর কারন statistic এটাই বলে যে আমরা মরবো, হারবো।

    Housel পালটা বলেন যে পৃথিবীতে সব সময় নতুন নতুন ঘটনা ঘটে। যেটা আগে হয়েছে, তার মানে এই না যে সেটাই সব সময় হবে। কেউ কখনো অতীতের ঘটনাগুলো দেখে ভবিষ্যত বলে দিতে পারে না। তাই optimistic চিন্তা করা ভালো। এটা যতই আজগুবি মনে হয় না কেন, ফিউচারে যখন এটা ঘটবে, তখন সবাই এটা সাধারন ঘটনা হিসেবে মেনে নিবে।

    এই কথাগুলোই আমার পাবজি বন্ধুদের বলেছিলাম যে পাবজি খেলায় optimism ভালো।

    ১) এই কথাগুলো সেদিন বলার পরে আমি অনেক সিরিয়াসলি খেলেছিলাম। DJ ভাই (ReviewRon) চিকেন নিয়ে নিয়েছিলো।

    ২) আমি আর জামি ভাই (BeastyMen) অনেক ফাইট দিয়ে অনেক কিল নিয়েছি। টপ ২ নিজের দমে হয়েছি।

    ৩) আমাদের কিল রেট আগের চেয়ে বেড়ে গেছে।

    বলা যায় না এমন অনেক কিছু হতে পারে যেটা আমরা কল্পনাও করতে পারি নাই।

    এর আগের দিন দুইটা ম্যাচ খেলে দুটাতেই চিকেন ডিনার পেলাম (#1), এর পর গতকাল রাতের এই স্ক্রিন শটে আমাদের কিল অনেক বেড়ে গেছে। আগে যেখানে খুব বেশি হলে ২-৩ টা হতো সেখানে ৯টা থেকে ১৫টা হয়ে গেছে। প্রথম ম্যাচে চিকেন, আর শেষের ম্যাচেও চিকেন।

    Optimism আসলেই কাজ করে 💭

    এখন Optimism এর মানে এই না যে হটাৎ করে একদিন সব অনেক ভালো হয়ে যাবে।

    Optimism মানে হলো প্রতিদিন ঘুম থেকে উঠে আমি কাজ করবো আর গতকালের চেয়ে অল্প একটু ভালো অবস্থা হবে। এইভাবে চালিয়ে গেলেই একদিন আগের চেয়ে অনেক ভালো ফলাফল পেয়ে যাবো।

  • কপি পেস্ট করুন আরো সহজে

    ফেসবুকে লিঙ্ক শেয়ার করার চেয়ে ভালো হলো ফুল লেখাটা কপি করে পেস্ট করে দেওয়া।

    এতে করে যে কেউ খুব সহজেই আইডিয়াটা জেনে গেলো, তার আর কষ্ট করে ওয়েবসাইটে যেতে হবে না।

    তাই আমার প্রত্যেকটা ব্লগ পোস্টের নিচে এই কপি বাটন দিয়ে দিয়েছি।

    বাটনে ক্লিক করার সাথে সাথেই মূল লেখাটা কপি হয়ে যাবে।

    এরপর ফেসবুক, মেসেঞ্জার, হোয়াটসএপ বা অন্য কোন সোশাল মিডিয়া সাইটে লেখাটা পেস্ট করা আরো সহজ হয়ে গেলো।

    ওয়ার্ডপ্রেস এমনিতেই লেখার মধ্যে অনেক নিউ লাইন আর কোড দিয়ে দিয়েছিলো, তাই আমি একটা regex ইউজ করে লেখাটা আরো ক্লিন করে দিলাম, জেনো কষ্ট করে আবার ফরমেটিং ঠিক করতে না হয়।

    লেখা কপি পেস্ট করে শেয়ার করলে সাথে অবশ্যই লেখককে ক্রেডিট দেওয়া উচিত।

    তাই আমি লেখার শেষে আমার নাম আর পোস্টের লিঙ্ক এড করে দিলাম।

    আইডিয়াগুলো ছড়িয়ে দিন!

  • Loading Skeleton in React

    React Suspense lets you show a loading indicator while your component data is being loaded (from a server)

    Here, I am rendering a blog page with Nextjs and fetching the blog post data from a WordPress REST API.


    I created a loading skeleton using some <div>’s and the TailwindCSS ‘animate-pulse’ class.

    Now with Nextjs, you can easily create a loading indicator just by creating a `loading.tsx` page and dropping it into your page’s root folder.

    However, when you do this your entire page waits for the data.

    What if you only want the loading skeleton to show up on certain parts of the page? and not the entire page!

    You can do this by moving data fetching to a child component and then wrap it inside the <Suspense/> like this:

    <Suspense fallback={<LoadingPosts />}>
    <HomeLatestPosts />
    </Suspense>

    Here: the component will load <HomeLatestPosts /> when data is loaded and use the <LoadingPosts /> as a fallback.

    Pretty clean don’t you think?

  • টাইপিং স্পিড বাড়ালে প্রোগ্রামিং এও কাজে লাগে

    ইংরেজী টাইপিং টা শিখে রাখলে (10 finger typing) প্রোগ্রামিং সহ অন্যান্য অনেক যায়গাতেই সুবিধা পাওয়া যায়।

    ইমেইল লেখা, গিটহাব কমিট মেসেজ লেখা, সোশাল মিডিয়া পোস্ট, ব্লগ পোস্ট সহ সব যায়গায় কাজে দেয়।

    আমি একবার কষ্ট করে 10 finger typing টা শিখে ফেলেছিলাম। প্রথম ২ সপ্তাহ কাজ করতে অনেক কষ্ট হয়েছিলো। কিন্তু এখন আজীবন এর সূবিধা ভোগ করছি।

    এমন কিছু ইনভেস্টমেন্ট আছে যা একবার কষ্ট করে করলে তার রিটার্ন সারা জীবন পাওয়া যায়, তার মধ্যে এই টাইপিং স্কিল একটা।

    অনলাইনে অনেক ফ্রি টুলস আছে যেখানে রেগুলার টাইপিং শিখতে পারবে। TypingClub তার মধ্যে একটা।

  • গত ১ সপ্তাহে ৬৮০০ লাইন কোড লিখলাম!

    হ্যা শুনলে যে কেউই অবাক হবে 👀

    GitHub বলে আমার প্রোজেক্টে টোটাল ৬৮০০ লাইন কোড কন্ট্রিবিউট করা হয়েছে। আসলে যার মধ্যে ৪৮০০ লাইন কোডই এই কনফিগারেশন ফাইলের auto-generate করা।

    খেয়াল করে দেখো, প্রত্যেকটা ব্র্যাকেটকেও একটা নতুন কোড লাইন হিসেবে ধরেছে।

    এই রকম আরো কয়েকটা config ফাইল বাদ দিলে আমি হয়তো বড়জোড় ৫০০ এরও কম লাইন কোড নিজে লিখেছি, যার মধ্যে ৯০% ই আবার Github Copilot AI দিয়ে জেনারেট করা 😁

    কিন্তু autocomplete আর AI Generate ছাড়াও, প্রোগ্রামারের যেই আসল কাজটা করতে হয় সেটা হলো চিন্তা করা। এরপর কি করতে হবে, আর কিভাবে করতে হবে, সেটা চিন্তা করে বের করা।

  • HTML/CSS দিয়ে কি করা যায়?

    যত ওয়েব বেইজড ইউজার ইন্টারফেস বা ওয়েব এপ্লিকেশন আছে, সেগুলা HTML/CSS দিয়েই করা।

    তবে,

    আজকাল মডার্ন ডেভেলপারেরা খালি HTML/CSS এ কোড করে না। এর বদলে জাভাস্ক্রিপ্টের একটা স্পেশাল ফ্লেভার JSX দিয়ে এই জিনিসগুলো বানানো হয়।

    HTML এর যায়গায়, হয় JSX, HTMX অথবা astro এর মত কিছু superset ইউজ করে।

    CSS এর যায়গায় TailwindCSS এর মত একটা ফ্রেমওয়ার্ক ইউজ করে।

    এমনকি JavaScript এর যায়গায় TypeScript এর মত আরেকটা superset ইউজ করে।

    🤷‍♂️

    তাহলে কি বেসিক HTML/CSS এর আর কোন কাজ নেই?

    হ্যা আছে অবশ্যই।

    একজন ডেভেলপার এর HTML, CSS, JavaScript এর মৌলিক যত ধারনা থাকবে, সে মডার্ন টুলস আরো ভালো করে চালাতে পারবে।

    So keep learning!

  • প্রতিদিন ১ ঘন্টা করে নতুন একটা জিনিস শেখার অভ্যাস

    সফটওয়্যার ইঞ্জিনিয়ারিং ফিল্ডে কোন কিছু শিখে শেষ করা যায় না। বিশেষ করে জাভাস্ক্রিপ্ট Eco-System তো আরো বেশি পরিবর্তনশীল।

    নতুন নতুন টুলস, টেকনোলজি, আর টেকনিক আসতেই থাকবে, তাই সব কিছু শিখে শেষ করে ফেলার মাইন্ডসেট কোন কাজেই আসবে না। কারন যতদিনে আমি একটা জিনিস শিখে শেষ করবো, ততদিনে হয়তো নতুন একটা কিছু চলে এসেছে।

    বরং অন্য একটা মাইন্ডসেট করা আরো ভালোঃ সব সময় আমি নতুন কিছু শিখতে থাকবো।

    প্রতিদিন ১ ঘন্টা করে নতুন একটা জিনিস শেখার অভ্যাস, লং টার্মে অনেক কাজে দিবে।

    যেমন আজকে আমি TypeScript এর উপরে একটা ভিডিও দেখলাম। ReactJS এ TypeScript এর সব use-case এখানে দেখানো হয়েছে।

    এর পরে যখন আমি React প্রোজেক্টে কাজ করবো, তখন আমার স্কিল + কনফিডেন্স আরেকটু বাড়বে।

    BTW: TypeScript হলো জাভাস্ক্রিপ্ট এর Superset (আরেকটা উন্নত ভার্সন)