Author: Tamal

  • JSON

    JSON হলো প্রোগ্রামিং এর একটি জনপ্রিয় ডেটা ফরম্যাট। এক সফটওয়ার থেকে অন্য সফটওয়্যারে ডেটা বা ইন্সট্রাকশন আদান প্রদানের জন্য আমরা JSON ইউজ করে থাকি।

  • RedotPay ভার্চুয়াল ভিসা কার্ড করার ফুল গাইড (Google Pay, Apple Pay, Facebook Stars)

    RedotPay দিয়ে একটা ভার্চুয়াল ভিসা কার্ড নিয়ে নিন আর অনলাইনে পেমেন্ট সমস্যা সমাধান করুন। ভার্চুয়াল কার্ড দিয়ে কি কি করা যায়?

    ১) Google Pay তে কার্ড এড করে গুগল প্লে আর in-app-purchase করা যায়। গুগল ড্রাইভ, ফেসবুক স্টার, মেটা ভেরিফাইড। যেকোন পেইড এপ সাবস্ক্রিপশন নেওয়া যায়।

    ২) Apple Pay তে কার্ড এড করা যায়। এপল পে, গুগল পে দিয়ে NFC পেমেন্ট করা যায়।

    ৩) Udemy তে কোর্স কেনা।

    ৪) Namecheap, Hostinger সহ বিদেশি সাইটে ডোমেইন হোস্টিং কেনা।

    এই গাইড ফলো করে আপনি একটা RedotPay একাউন্ট খুলে KYC ভেরিফিকেশন করবেন। এরপরে সেলারের কাছ থেকে ডলার কিনে RedotPay তে কার্ড ফি লোড করবেন। ফাইনালি একটা ভার্চুয়াল ভিসা কার্ড করে অনলাইন ট্রানজেকশন করবেন।

    RedotPay কার্ডটি করার জন্য আপনার যা যা লাগবেঃ-

    • এনআইডি বা পাসপোর্ট (KYC ভেরিফিকেশনের জন্য)
    • একটি ইমেইল (জিমেইল) আর ফোন নাম্বার
    • ১৩০০-১৫০০ টাকা (কার্ড এক্টিভেশন ফি ১০ ডলার দেবার জন্য

    ১ম ধাপ – RedotPay একাউন্ট খুলুন

    ১) এই লিংক এ ক্লিক করে RedotPay এর জন্য আপনার ইমেইল বা জিমেইল দিয়ে সাইন আপ করুন। আপনি যদি আগে থেকেই এপ ইন্সটল করে থেকে থাকেন তাহলে আমার রেফারেল কোড ব্যাবহার করতে পারেনঃ- n5via

    এটা আমার রেফারেল লিঙ্ক। এই লিঙ্ক দিয়ে সাইন আপ করলে আপনি ৫ ডলার সাইন আপ বোনাস পাবেন আর আমি কার্ড ফি এর একটা অংশ কমিশন পাবো।

    ২) সাইন আপ কমপ্লিট করে গুগল প্লে বা এপল এপ স্টোর থেকে এপ ডাউনলোড করে নিন। আমি এখানে গুগল প্লে থেকে Android এপটা ইন্সটল করছি।

    ৩) এপ ওপেন করে পুনরায় আপনার ইমেইল/পাসওয়ার্ড বা জিমেইল দিয়ে লগইন করুন।

    সাইন আপ করার পর আপনার একাউন্টে ৫ ডলার দেখাবে, কিন্তু এটা এখনো খরচ করতে পারবেন না। আপনাকে আগে KYC ভেরিফিকেশন করতে হবে।

    ৪) Verify your identity বার থেকে Verify বাটনে ট্যাপ করে আইডি ভেরিফিকেশন শুরু করুন।

    ৫) ভেরিফিকেশনের প্রথম ধাপে আপনাকে আপনার ফোন নাম্বার টি একাউন্ট এর সাথে বাইন্ড করতে হবে। আপনার মোবাইল নাম্বারটি দিন।

    ৬) এবার WhatsApp বা SMS -কোন মাধ্যমে ভেরিফাই করতে চান সেটা জিজ্ঞেস করবে। আপনার নাম্বারে যদি WhatsApp করা থাকে তাহলে দ্রুত OTP WhatsApp চলে আসবে। যদি SMS এ চান, তাহলে SMS ট্যাপ করবেন।

    ফোন নাম্বার ভেরিফাই হয়ে গেলে in-progress দেখাবে। এর পরের ধাপে Facial Recognition করবেন।

    ৭) আপনি যেহেতু বাংলাদেশে থাকেন তাই All countries except USA দিয়ে Continue ট্যাপ করুন।

    ৮) Complete your verification থেকে Identity document এ ট্যাপ করুন।

    ৯) এর পরের ধাপে ভোটার আইডি দিয়ে ভেরিফাই করলে ID card অথবা পাসপোর্ট দিয়ে করতে চাইলে Passport ট্যাপ করুন।

    RedotPay একটি Visa পার্টনার। Visa কার্ড ইস্যু করা একটি রেগুলেটেড একটিভিটি। এর জন্য বিভিন্ন দেশের ব্যাংক আর সরকারের Anti-money laundering আইন মেনে লেনদেন গুলো করতে হয়। এর জন্যই প্রত্যেক ইউজারকে Visa কার্ড ইস্যু করার জন্য KYC (know your customer) আইডি ভেরিফাই করতে হয়।

    আমাদের এই একাউন্ট খোলার সময় আমরা ভোটার আইডি দিয়ে আইডি ভেরিফাই করেছি।

    ১০) এবার এক এক করে কার্ডের সামনের দিক আর পেছনের দিকের ছবি তুলে ফেলুন। প্রত্যেকবার ছবি তুলে দেখে নিন লেখাগুলো ক্লিয়ার এসেছে কিনা। যদি ঝাপসা আসে, তাহলে Retake Photo ট্যাপ করে আবার ভালোভাবে ছবি তুলুন। পারফেক্ট হয়ে গেলে Document is readable এ ট্যাপ করে পরের ধাপে যান। দেখানোর সুবিধার্থে এখানে দুটি স্টেপকে একসাথে কম্বাইন করে দেওয়া হল।

    ১১) এর পরের ধাপে ফেসিয়াল ভেরিফিকেশন করে আপনার চেহারার ছবি নিন। সবগুলো ধাপ করে ফেললে আপনার প্রোফাইল Under review তে থাকবে। কয়েক মিনিট অপেক্ষা করুন।

    প্রোফাইল ডিটেইল আর ডকুমেন্ট ভেরিফাই হয়ে গেলে আপনি একটা সাক্সেস মেসেজ পাবেন

    ২য় ধাপ – RedotPay তে ডলার লোড করুন

    RedotPay তে ডলার লোড করার অনেক মাধ্যম আছে যেমন বিদেশি Credit/Debit card, Google Pay, Apple Pay, PayPal, Revolut Pay, Skrill, Neteller ইত্যাদি। কিন্তু আমরা যারা বাংলাদেশে থাকি আমাদের যদি এই অপশন গুলো থাকতো তাহলে আবার RedotPay একাউন্ট খুলছি কেনো?

    এই সমস্যা সমাধান করতে আমরা একজন ডলার সেলারের কাছ থেকে ডলার কিনবো। এখানে আমি একজন Trusted ডলার সেলারের প্রোফাইল আইডি শেয়ার করছি। আপনি উনার সাথে মেসেঞ্জারে কন্টাক্ট করে ডলার কিনতে পারবেন।

    ডলার সেলারের ফেসবুক প্রোফাইল

    এই আর্টিকেল লিখার সময় ১ ডলার = ১৩১ টাকা করে রেট ছিলো। সেলারের কাছে যোগাযোগ করে আগে রেট আর আর পেমেন্ট মেথডটি কনফার্ম করে নিবেন।

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

    আপনি এই ডলার সেলারের কাছ থেকে ৮-১০ ডলার কিনে ফেলুন। একটি ভার্চুয়াল কার্ডের ফি ১০ ডলার কিন্তু আপনি আমার কুপন কোড ইউজ করলে ২০% ছাড় পাবেন, অর্থাৎ ৮ডলারে কার্ড নিতে পারবেন।

    কেনার সময় আপনার RedotPay ID শেয়ার করলেই সেলার আপনাকে টাকা সেন্ড করে দিতে পারবে।

    আপনার RedotPay ID দেখতে হলে এপের উপরে বাম সাইডে প্রোফাইলে ট্যাপ করুন। এরপর UID কপি করুন।

    ৩য় ধাপ – ভিসা কার্ডের জন্য এপ্লাই করুন

    ১) ডলার লোড করার পরে আপনি একটি ভার্চুয়াল বা ফিজিকাল কার্ড এর জন্য এপ্লাই করতে পারবে। উপরে Apply for a RedotPay card থেকে Apply বাটনে ট্যাপ করুন।

    ২) RedotPay তে ভার্চুয়াল বা ফিজিক্যাল কার্ড সিলেক্ট করুন। ভার্চুয়াল কার্ড দিয়ে অনলাইনে পেমেন্ট করা যায়। ফিজিক্যাল কার্ড দিয়ে ATM আর POS মেশিন দিয়ে খরচ করা যায়। ভার্চুয়াল কার্ডের ফি হল ১০ ডলার আর ফিজিক্যালের ফি ১০০ ডলার। আমরা এখানে ভার্চুয়াল কার্ড অর্ডার করে দেখাচ্ছি।

    কার্ড সিলেক্ট করে কুপন এড করুন-

    • TAMAL = 20% off virtual card
    • BLOGKORI = 20% off physical card

    কার্ড সিলেক্ট করে Apply card এ ট্যাপ করে পরের ধাপে যান।

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

    নাম, এড্রেস কনফার্ম করে Pay বাটনে ক্লিক করুন।

    কিছুক্ষণ পরেই আপনার নতুন কার্ডটি দেখতে পারবেন।

    এবার আপনি আপনার কার্ডটি Google Wallet বা Apple Pay তে এড করে ফেলতে পারবেন। কার্ডে যে ৫ ডলার বোনাস পেয়েছেন সেটা এখন খরচ করার পালা।

    ৪র্থ ধাপ – কার্ড দিয়ে ডিজিটাল পার্চেজ করা

    এবার কার্ড দিয়ে ডিজিটাল কেনাকাটার পালা। যেকোন ওয়েবসাইটে কার্ড নাম্বার দিয়ে পেমেন্ট করা যাবে। গুগল প্লে বা গুগল wallet এ যদি কার্ডটা সেভ করে রাখেন তাহলে যেকোন এপে অটো পে করা যাবে।

    এখানে আমার বন্ধু আমাকে ফেসবুক স্টার পাঠিয়ে কার্ড টেস্ট করছেঃ-

    ১) আমার ফেসবুক প্রোফাইলে গিয়ে যে পোস্টে স্টার পাঠাবেন সে পোস্টে Send a gift বাটনে ট্যাপ করুন।

    ২) Google Play তে সেভ করা কার্ড দিয়ে 1-tap buy চাপ দিয়ে পেমেন্ট করে ফেলুন। আমার বন্ধু ৩৫ টাকা দিয়ে ২৯ টা স্টার কিনেছে।

    একই ভাবে 8-ball-pool গেমে গিয়ে ৪০ টাকা দিয়ে একটা ad-block আপগ্রেড কিনেছেঃ-

    প্রতিটি ট্রানজেকশন RedotPay এপ থেকে দেখতে পারবেনঃ-

    Congratulations!

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

    RedotPay বিষয়ক আরো জিজ্ঞাসা বা মতামত ফেসবুক গ্রুপে করতে পারবেন।

    RedotPay রেফারেল লিঙ্কঃ- https://url.hk/i/en/n5via

    কুপন কোড-

    • TAMAL = 20% off virtual card
    • BLOGKORI = 20% off physical card

    এখন পর্যন্ত আমরা যেসব সাইটে RedotPay ভিসা কার্ড দিয়ে পে করতে পেরেছি-

    • Google Pay/Android
    • Google Drive
    • Facebook Stars, Meta verified
    • Namecheap
    • Hostinger
    • Cloudflare
    • Udemy
    • Robi/Airtel pay

    এই পেজটি সেভ করে রাখুন। নতুন কোন আপডেট বা অফার আসলে এই পেজে আগে আপডেট করে দিবো।

  • Python User Group Dhaka: Our Journey Begins – Event Recap

    On a cool February evening in Dhaka, a group of passionate Python enthusiasts gathered for something special—our city’s first-ever Python User Group meetup. What started as an idea a few weeks earlier turned into a diverse community event, laying the foundation for Python Dhaka’s journey.

    Here’s how we made it happen and what we learned along the way.

    Arranging the Meetup

    The whole event was organized through our Facebook group. In Bangladesh, Facebook is the primary hub for tech enthusiasts to form communities and organize events. Unlike platforms like Meetup or Discord, Facebook groups often serve as the starting point for grassroots tech movements here. I launched a Facebook group for Python Dhaka a few weeks prior, and thanks to my personal network, it grew to 250 members within two weeks.

    The next logical step was to organize an in-person meetup, because I want this group to be all about connecting with the local Python enthusiasts. After thinking about it for a few days, I locked in a date and venue for the first meetup.

    I choose the 15th of February because it’s the mid-month, and a Saturday. In Bangladesh, Fridays and Saturdays are official holidays. Friday is the most popular day for events, followed by Saturdays. I picked Chandrima Udyan for two reasons: 1. It has easy access to the bus and metro route; 2. It’s a public park we can access for free.

    I created the event on Facebook and started spreading the word on the FB group, my profile, Twitter, Linkedin, and my Instagram handle. I even created a short video announcing the event and posted it on all of my socials.

    How the Meetup Went

    At 5 PM local time, I waited near the park entrance, feeling a mix of excitement and nerves. Soon, one by one, attendees started arriving, their calls guiding me to them. Here’s me waiting:

    As we entered the park, a cool evening breeze greeted us—washing away the stress of city life and setting the perfect mood for our first meetup.

    I started the meeting by sharing the Python Software Foundation‘s missions with the attendees, and how it relates to us:

    • To grow a diverse and international community of Python programmers: Organizing the Python Dhaka community is helping this mission.
    • Encourage knowledge sharing, collaboration, and support devs of all backgrounds: Students from three universities joined this event. They were able to share knowledge and build future collaboration opportunities. This community is open to all levels of developer experience.
    • Grow a diverse and welcoming community; support underrepresented communities in tech: One participant came from a non-computer science background, eager to transition into tech. This is exactly why Python Dhaka exists—to welcome everyone, regardless of their starting point.

    I then shared how I started evangelizing Python.

    I am a professional JavaScript developer with React and NextJS expertise. I use JS for my daily work. My cousin wanted to learn Python, so I got into learning it. I found Python to be easy to learn and easy to teach. I was looking for a Python community in Dhaka, but there was none. That’s why I decided to organize the Python User Group Dhaka.

    I also mentioned that I don’t own Python Dhaka. I am only organizing it for the time being. As this community grows, and if in the future I have to move cities, I will pass the torch to the next person to continue organizing our community activities.

    We are not strictly Python fanatics. We would love to collaborate with our friends in the JavaScript, PHP, and Kotlin communities too from time to time.

    We heard personal stories from the attendees, how they got into programming, and how they are using Python. Two students are doing competitive programming with C, C++ and thinking of switching to Python for CP and ML.

    Two of the attendees came from different districts just so they could attend this meetup. 

    One attendee traveled over 80 kilometers from Tangail just to be here. That level of dedication reminded me why this community matters.

    I shared many tech tips, and also informed them about the free GitHub Student Developer pack and how to avail it. We also discussed getting real-world experiences by putting an app out in the world.

    We also announced the Campus Ambassador Program for Python Dhaka and nominated Abdullah to be the ambassador at Southeast University. A campus ambassador is a person in your college/university who will promote and evangelize Python programming language on your campus.

    As the meetup was about to end, it was getting dark when we clicked this group photo.

    Next Steps

    Our journey is just beginning. We plan to host monthly meetups around the 15th of each month, but our ambition goes beyond that. We want to nurture the next generation of Python developers in Bangladesh, and one day, bring PyCon Bangladesh to life.

    If you’re as passionate about Python as we are—whether you’re in Dhaka or anywhere in the world—we’d love your support. Find Python User Group Dhaka on Facebook, or connect with me on Linkedin, X, and Instagram. Let’s build this community together!

  • Which Payment Processor to Add in MySocial

    I am building MySocial, a one-page bio website maker. So far users can sign up for a free account. But next up is adding a payment processor.

    I want to offer more premium features to this app, so I can make money from this. But for this I will need to use a payment system.

    I have a few options for now:

    PayPal
    Stripe
    Paddle

    Stripe is the easiest of them to setup, but unfortunately, I live in Bangladesh where this service is not available. If I want to use Stripe, I have to register a business in the USA or UK, get a business bank account, a business phone number just so I can apply for it.

    For all this, I set aside 25-30 thousand Bangladeshi takas, and I was shopping for companies who can setup an offshore business for me.

    But then I thought, even with a UK business, there is no guarantee that Stripe will approve my app. And even if I get approved to setup Stripe, there is no guarantee that MySocial, my first SaaS will make money.

    Fortunately, there is Paddle and they allow sole-proprietorship businesses from Bangladesh. Paddle will process debit/credit card payments, PayPal payments, Google Pay, Apple Pay for a fixed fee of 5% + 50c per transaction.

    I have already configured Paddle payments in MySocial, check it out!

  • MySocial এ কোন পেমেন্ট প্রসেসর এড করবো?

    আমি MySocial নামের একটা এক-পেজের বায়োডাটা সাইট বানাচ্ছি। এখন পর্যন্ত এই সাইটে যে কেউ ফ্রি-তে একাউন্ট খুলে একটা ফ্রি-সাইট পাবলিশ করে ফেলতে পারবে। এর পরের ধাপ হলো পেমেন্ট প্রসেসর এড করা।

    এই সার্ভিসে আমি আরো প্রিমিয়াম ফিচার এড করতে চাই, যেনো এখান থেকে ইনকাম জেনারেট করা যায়। কিন্তু তার জন্য দরকার একটা পেমেন্ট প্রসেসিং সার্ভিস।

    আমার হাতে কয়েকটা অপশন আছেঃ

    PayPal
    Stripe
    Paddle

    এদের মধ্যে Stripe সেটাপ করা সবচেয়ে সহজ, কিন্তু দূর্ভাগ্যবশত আমি বাংলাদেশে থাকি যেখানে এই সার্ভিসটা এভেইলেবল না। আমি যদি স্ট্রাইপ ইউজ করতে চাই তাহলে USA/UK তে একটা অফ-শোর বিজনেস সেটাপ করতে হবে; একটা বিজনেস ব্যাংক একাউন্ট নিতে হবে; আর একটা বিজনেস ফোন নাম্বার ভাড়া নিতে হবে।

    এই সবের জন্য আমি আলাদা করে ২৫-৩০ হাজার টাকা রেখে দিয়েছিলাম আর ভালো একটা প্রোভাইডার খুজছিলাম।

    কিন্তু পরে আমি চিন্তা করলাম, আমি একটা UK বিজনেস সেটাপ করার পরে যদি Stripe এর এপ্রুভাল না পাই? অথবা এপ্রুভাল পেলেও কোন গ্যারান্টি নাই যে আমি MySocial থেকে ইনকাম করবো কিনা।

    সৌভাগ্যবশত, Paddle নামের একটা পেমেন্ট প্রসেসর আছে যেখানে বাংলাদেশ থেকেও সাইন আপ করা যায়। এর জন্য কোন কোম্পানী সেটাপ বা ট্রেড লাইসেন্স লাগে না। এক মালিকানা ব্যাবসায়েও এপ্রুভাল নেওয়া যায়। প্যাডেল ব্যাবহার করে আমার ইউজাররা ডেবিট কার্ড/ক্রেডিট কার্ড, PayPal, Google Pay, Apple Pay দিয়ে পে করতে পারবে। ওদের চার্জ প্রতি ট্রানজেকশনে ৫% + ৫০ পয়সা।

    MySocial এ আমি অলরেডি প্যাডেল পেমেন্ট প্রসেসর এড করে ফেলেছি। প্রো প্ল্যান নিতে চাইলে দেখে আসতে পারো।

  • The Subtle Art of Not Giving a Fuck

    বইটা পড়ে শেষ করলাম। এখন এই বইটার একটা শর্ট রিভিউ দিবো।

    এই বছরে এইটা আমার পড়া ২য় বই। আমি গত ১-২ বছর থেকে বই পড়ার অভ্যাস করছি, বেশিরভাগই নন-ফিকশন।

    এই বইয়ের লেখক Mark Manson কে আমি ইউটিউবে ফলো করি। উনি লাইফের ব্যাপারে অনেক ভিন্নধর্মী বিষয় তূলে ধরেন। যেমন বিলিয়নিয়ারদের ডেইলি রুটিন ফলো করলেই আমরা বিলিয়নিয়ার হয়ে যাবো না। তাদের ডেইলি রুটিন হলো সবচেয়ে সহজ একটা জিনিস। তারা আসল যে কাজটা করে অনেক বড়লোক হয়েছেন সেই কাজটা রেপ্লিকেট করা অনেক কঠিন, তাই আমরা সহজ জিনিসটাই অনুকরন করি।

    আচ্ছা, বই এর ব্যাপারে আসি। সবার প্রথমে এই বই এর নামের অর্থটার ব্যাপারে বলি।

    “I don’t give a fuck” একটা ইংরেজী প্রবাদ। এর বাংলা ভাবানুবাদ হবে, আমি এর তোয়াক্কা করি না। আরো সহজে বললে, আমি এটার কেয়ার করি না। বা বাংলায় আরো খারাপ ভাবে বললেঃ “আমি এর ধার ধারি না; চুদি না; চোদে না” –বুঝতেই পারছো।

    তো “The subtle art of not giving a fuck” শুনলে হয়তো মনে হতে পারে এই বইটাতে বলা হয়েছে কিভাবে কোন কিছুর কেয়ার না করে সব কিছুর উর্ধে চলে যাওয়া যায়। কিন্তু ব্যাপারটা তা না। প্রথম চ্যাপ্টারেই এটা এক্সপ্লেইন করা হয়েছেঃ

    Why you should not give a fuck? But you should!

    আমাদের জীবনে অনেক কিছুই চলছে। লেখক বলেছেন সব কিছু নিয়েই মাথা ঘামানো উচিত না, কারন আমরা খুবই অল্প কিছু জিনিসকে প্রাইয়োরিটি দিতে পারবো (give a fuck)। এমন জিনিসের উপরে ফোকাস করতে হবে যা আসলেই দরকার, বা যেটা করলে আমার অথবা আমার প্রিয়জনের লাইফে কোন পরিবর্তন আসবে।

    মূল কথা হলো আমাদের ব্যাক্তিগত জীবনে অনেক সীমিত সময়, আর এনার্জি আছে। এই সীমিত সময়গুলো ভূল জিনিসে দিয়ে খরচ না করে, দরকারি জিনিসে খরচ করতে হবে। এখানে লেখক একটা উদাহরন দিয়েছেনঃ- আমি হয়তো কোন কিছুই কেয়ার করি না, কিন্তু যখন দেখবো আমার বাবা/মা’র থেকে কেউ টাকা মেরে দিয়েছে, আমি সেটা অবশ্যই কেয়ার করবো। আমি দিনরাত এক করে দিবো, আর যে এটা করেছে তার লাইফ হেল করে দিবো। তো এখানে Fuck দিতে হবে। তোমার কাছে খুবই লিমিটেড Fucks আছে, আর সেটা বুঝে শুনে দিও।

    বইয়ে এইরকমই আরো অনেক ছোট ছোট ফান্ডা ছিলো যেটা আমার দৃষ্টিভঙ্গি চেঞ্জ করে দিয়েছে। আমার Anxiety আরো কমিয়ে দিয়েছে। এখন আমি বই এর একদম শেষ এবং সবচেয়ে মুভিং চ্যাপ্টারে জাম্প করবো।

    তুমি একদিন মরে যাবে

    এই চাপ্টারে লেখক Ernst Becker এর বই থেকে মৃত্যুর ব্যাপারে কয়েকটা রিয়েলাইজেশন শেয়ার করেছেন।

    মানুষ হিসেবে আমরাই একমাত্র প্রানী যারা অতীত আর ভবিষ্যতের ব্যাপারে চিন্তা করতে পারি। আমরা ভাবতে পারি আগে কি করেছিলাম, অথবা কল্পনা করতে পারি, আগের ঘটনাগুলো অন্যভাবে হলে কি হতো। বা ভবিষ্যতে আমরা কি কি করবো।

    যেহেতু আমরা ভবিষ্যত কল্পনা করি, কোথাও না কোথাও আমরা অবচেতন মনে নিজের মৃত্যুর কথাও কল্পনা করে ফেলি। আমরা চাই মরার পরেও জেনো মানুষ আমাদেরকে মনে রাখে। আর এ জন্যই মানুষ তার Legecy ধরে রাখার জন্য নানান কাজ করে থাকে।

    মানুষ অনেক বাচ্চা কাচ্চা করে বংশধর রেখে যায়। বিল্ডিং বানিয়ে সেটাতে নিজের নাম দেয়। বড় বড় প্রোজেক্ট, প্রকল্প করে। পৃথিবীর সকল সভ্যতার নিদর্শন, বড় বড় স্থাপত্যের মাঝে এই আকাংখাটাই দেখা যায়। যেমন আমাদের বাংলাদেশে শেখ হাসিনা তার পরিবারের সবার নামে কত কত কিছু করে গেছেন। এই সব কিছু মানুষের সেই অমর হবার চাওয়া থেকেই আসে। কোন এক দলের ভবিষ্যৎ অস্তীত্ব রক্ষা করার জন্যই তখন তারা অন্য এক দলের সাথে যুদ্ধ শুরু করে দেয়।

    Ernest Becker বলেছেন, আমরা যখন নিজেকে অমর করার জন্য মরিয়া হয়ে পরি, এইটাই আমাদেরকে ভালোভাবে বাচতে দেয় না। বাচতে হলে এই রিয়েলাইজেশনটা আনতে হবে যে নিজেকে অমর করে কোন লাভ নেই। আমরা আসলেই থাকবো না। যখন ফাইনালি এই কঠিন সত্যটা মেনে নিতে পারবো, যে হ্যা, আমি একদিন আসলেই মরে যাবো। তখন আমি রিল্যাক্স হয়ে যাবো, আর কোন anxiety থাকবে না। তখন থেকে আমি লাইফের আসল দরকারি জিনিসগুলোর প্রতি নিজের সময় দিতে পারবো। অন্য মানুষের জন্য কাজ করতে পারবো। নিজের থেকে বড় কোন কিছুতে নিজেকে দিয়ে দিতে পারবো। এই রকম রিয়েলাইজেশন থেকেই মানুষ আর্মিতে জয়েন করে, ধর্ম কর্ম করে, অথবা মুগ্ধর মত নিজেকে আন্দোলনে বিলিয়ে দেয়।

    তো এই ছিলো The subtle art of not giving a fuck এর শর্ট রিভিউ। আমি এই বইটা আরো পড়তে থাকবো।

  • MySocial Early Beta Launch Log.

    On July 1st, I got to point the domain mysoci.al to the production site and did an early beta launch to my Facebook profile.

    Screenshot: Sharing about mysocial in Bangla in that post.

    My Facebook post garnered a hopping 500+ visitors to the site in the early hours and in the next full day it got another 2k visits to the site, as I was tracking the visits with Plausible, I couldn’t believe the current active users to the site (93 active visitors at one point):

    As of writing this article, a total of 3k visitors checked out the site. All of them came from my Facebook profile.

    I posted a bunch of FB stories, all linking to the site. This first story got 2.9k views:

    These fb stories combined also drove 534 visitors to the site:

    Here’s my profile page I shared (mysoci.al/tamal):

    And here’s the homepage at the time of the early beta launch (mysoci.al):

    Over the course of 3 days the site generated 100+ new users and close to 80 fully completed sites.

    Stats from the Kinde dashboard:

    Here’s a few screenshot of the site in the beta launch:

    Builder page (not signed in):

    Avatar upload tab:

    Links:

    Themes:

    Builder page (signed in):

    Onboarding flow:

    Dashboard page:

    The “Go Pro” version hasn’t been implemented yet.

    As you can see the design is very crappy. I wanted to quickly put together something and launch early. That’s why I didn’t spend much time making everything perfect.

    Here are some of the sites from the registered users who signed up for the early beta:

    I was anxious to share this site to the public so early.

    At one side, I wanted to make it perfect, and on the other side I wanted to quickly get feedback.

    MySocial will never be perfect if I don’t publish and get early user feedback.

    To me, done is better than perfect.

    After launching this site, I quickly realized so many tweaks and improvements that I can do for this site.

    My next steps with MySocial:

    I want to implement the pro version through user roles and add more features for the pro users.

    Add payment mechanism to the app, and get paying users.

    Once I get a few paying users after launching to various product sites, then I will fully invest in this product to delight my users.

    While I do this, I will keep pushing new features and fix bugs to delight the free users.

    Now you may remember MySocial from the past, here’s an insight on that:

    MySocial’s original version (2022)

    I originally started developing MySocial in May 2022 as part of the 30 day startup challenge. It took me 2 months to build the MVP. I built it out with a React frontend and NodeJS Express backend. I hosted the site on Digital Ocean $5/mo app engine. I also got a CDN for $5/mo.

    I quit working on the product soon after the launch. So the app was the same as it was launched. I paid for the server for a year and then pulled the plug.

    MySocial’s first version was a failure because I kinda lost interest in the project. I also let the domain expire after 2 years. Luckily I still got a hold on that domain on the second time.

    For this new version, I rebuilt everything from scratch. I couldn’t get the old codebase to work, that’s why I decided to build from zero again. This time I coded this app with fullstack nextjs. It was a delight to work with it. My dev time was cut short to roughly 12 days (2-3 hours a day).

    Here are some screenshots from the old version:

    Till then.

  • প্রোগ্রামিং শুরু করো ১, একটা ভালো কম্পিউটার সিলেক্ট করা

    প্রোগ্রামিং করতে হলে তোমার একটা কম্পিউটার লাগবে। তোমার প্রথম কম্পিউটার দিয়েই তুমি কোডিং শিখবে, প্র্যাকটিস করবে, আর সফটওয়্যার বানাবে। এখন তোমার কাছে দুইটা অপশন আছেঃ ১) ডেস্কটপ কম্পিউটার, ২) ল্যাপটপ কম্পিউটার।

    দুই ধরনের কম্পিউটারেরই সুবিধা অসুবিধা আছে। সবচেয়ে ভালো হয় যদি তোমার কাছে ল্যাপটপ, ডেস্কটপ দুইটাই থাকে, তাহলে তুমি এগুলো ইউজ করে বুঝতে পারবে যে কোনটাতে তুমি বেশি প্রোডাক্টিভ।

    এই লেখাটা যারা পড়ছো, আমি ধারনা করছি তুমি মাত্রই শুরু করছো আর তুমি যেকোন একটা অপশন এখন নিতে পারবে। তাহলে চলো ডেস্কটপ আর ল্যাপটপ দুইটার ব্যাপারেই আলোচনা করিঃ

    ডেস্কটপ কম্পিউটারে কোডিং

    ডেস্কটপ কম্পিউটার মানে তোমার টেবিলের মধ্যে এই পিসিটা সেটাপ করা থাকে। এর আলাদা মনিটর, মাউস, কী-বোর্ড থাকবে। ডেস্কটপে তুমি তোমার সুবিধা মত মাউস, কী-বোর্ড, মনিটর, এমন কি সিপিইউ কেসিং পাল্টাতে পারবে।

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

    আমার সবচেয়ে ভালো যে জিনিসটা লাগে সেটা হলো বড় স্ক্রিনে কাজ করা। আমার মনিটরটা ২২ ইঞ্চি। আমি চাইলে আরো বড় মনিটর, বা একাধিক মনিটরও কানেক্ট করতে পারবো।

    ডেস্কটপে কাজ করতে হলে তোমার সেই একটা ডেস্কে বসেই কাজ করতে হবে। তার মানে যেই রুম আর টেবিলে তোমার মূল ডেস্কটপটা সেটাপ করা আছে, সেখানে বসেই তোমাকে কাজ করতে হবে।

    বাংলাদেশের অনেক এলাকায় লোডশেডিং একটা সমস্যা। ঘন ঘন লোডশেডিং হলে কিন্তু পিসি অফ হয়ে যাবে। বর্তমানে পিসির পাওয়ার ব্যাকাপ হিসেবে একটা UPS ডিভাইস আমরা কিনে নেই। বেসিক ইউ পি এস গুলো মাত্র ১০-১৫ মিনিট পিসির পাওয়ার ব্যাকাপ দেয়। এই অল্প সময়ে তুমি যাস্ট তোমার কাজটা সেভ করে রেখে দিতে পারো, আর কিছু না। এর চেয়েও বেশি ব্যাকাপ চাইলে তোমাকে তোমার পিসি তোমার বাসার IPS এর সাথে কানেক্ট করে রাখতে হবে। তাই যদি তোমার এখানে সব সময় কারেন্ট আসা-যাওয়া করে, তাহলে ডেস্কটপে কাজ করলে তোমার প্রোডাক্টিভিটির ব্যাপক হ্যাম্পার হবে।

    যদি কারেন্টের ব্যাকাপটা তুমি ম্যানেজ করতে পারো, বা তোমার এখানে লোডশেডিং কোন সমস্যা না, তাহলে ডেস্কটপ কম্পিউটার, প্রোগ্রামিং করার জন্য সবচেয়ে বেস্ট অপশন হবে।

    এখন চলো ল্যাপটপের কথা বলিঃ

    ল্যাপটপ কম্পিউটারে কোডিং

    ল্যাপটপে কাজ করার সবচেয়ে বড় সুবিধা হলো, এটা পোর্টেবল। যেখানে সেখানে নিয়ে, শুয়ে বসে তুমি কিছু না কিছু কাজ করতে পারবে। তোমার যদি সব সময় বিভিন্ন যায়গায় ট্রাভেল করতে হয়, যেমন বাসা, অফিস, কলেজ, কফি শপ, তাহলে ল্যাপটপ তোমার জন্য বেস্ট হবে।

    ল্যাপটপের বিল্ট ইন ব্যাটারিতে পাওয়ার ব্যাকাপ থাকে তাই কারেন্ট চলে গেলেও এক ঘন্টা অনায়াসেই প্রোগ্রামিং করে ফেলতে পারবে। বর্তমানের প্রায় সব ল্যাপটপই ৩-৪ ঘন্টার ব্যাটারি ব্যাকপের দাবি করে। তাই একবার ফুল চার্জ দিয়ে তুমি একটা কোডিং সেশন চালিয়ে দিতে পারবে।

    পোর্টেবল হওয়া সত্বেও এর কিছু অসুবিধাও আছে। ল্যাপটপ অনেক দিন ব্যাবহার করার পরে এর ব্যাটারি ব্যাকাপ কমে যায়। যার ফলে সব সময় তোমাকে পাওয়ার ক্যাবল নিয়ে ঘুরতে হবে। নতুন একটা ব্যাটারি কিনলেও দেখা যায় এটা অরিজিনাল ব্যাটারির মত এত টেকসই হয় না।

    সাধারণত ল্যাপটপ দিয়ে সারাদিন একটানা কাজ করা যায় না। পাওয়ারের সাথে লাগিয়ে কাজ করলেও সেটা লং-টার্মে অনেক ইফেক্ট ফেলে। ল্যাপটপ যেহেতু অনেক ছোট একটা প্যাকেজ, এর ইন্টার্নাল পার্টস গুলো অনেক টাইট ভাবে প্যাক করা থাকে। ল্যাপটপ রেগুলার গরম হতে হতে খুব তারাতারি এর ভিতরের পার্টসগুলো দূর্বল হয়ে যায়।

    ল্যাপটপে কাজ করলে টাইপিং আর ট্র্যাকপ্যাড ইউজ করা অনেকের জন্য ঝামেলা হতে পারে। যার জন্য প্রায়ই অনেকে ল্যাপটপের সাথে আলাদা মাউস আর কী-বোর্ড ইউজ করে। আমি এখন ল্যাপটপের সাথে আলাদা মাউস ইউজ করি।

    ফাইনালি, ল্যাপটপের ছোট স্ক্রিন কোডিং এর জন্য অসুবিধা হতে পারে, কিন্তু আমার অভিজ্ঞতা বলে যে এই ছোট স্ক্রিনে কাজ করতে করতে অভ্যাস হয়ে যায়।

    ল্যাপটপ যদিও যেখানে সেখানে নিয়ে শুয়ে বসে কাজ করা যায়, কিন্তু আমি সাজেস্ট করবো ল্যাপটপও তুমি একটা চেয়ার টেবিলে বসে ইউজ করো। কোন একটা ডেডিকেটেট চেয়ার টেবিলে কাজ করলে আরো মনোযোগ দিয়ে কাজ করা যায়।

    এখন যখন তুমি ডেস্কটপ ল্যাপটপ দুইটারই সুবিধা অসুবিধা জেনে গেছো, চলো দেখা যাক প্রোগ্রামিং এর জন্য কেমন কনফিগারেশনের পিসি তোমার দরকারঃ

    প্রোগ্রামিং এর জন্য কেমন কনফিগারেশন লাগবে?

    গত ২-৩ বছরে বের হয়েছে, এমন যেকোন কনফিগারেশনের ল্যাপটপ বা ডেস্কটপেই প্রোগ্রামিং করা যাবে। আমরা যদি আরেকটু ডিটেইলস এ যাইঃ

    প্রসেসর/সিপিইউ

    Intel, আর AMD Ryzen বর্তমানের ভালো প্রসেসর। তুমি যখন প্রোগামিং প্রোজেক্ট রান করবে, এই প্রসেসরের পাওয়ারই নির্ভর করবে কোডটা কত তারাতারি প্রসেস হবে। তাই যত ভালো স্পিডের প্রসেসর নিবে, তত ফাস্ট তোমার পিসি চলবে।

    এই দুই প্রোসেসর কোম্পানীর জেনারেশন আছে, যত পরের জেনারেশন, তত ভালো এই প্রসেসরটা কাজ করবে। যেমন ইন্টেলের এখন ১২ তম জেনারেশন চলছে। তার মানে ১২ জেনারেশনের প্রসেসর, স্বাভাবিক ভাবেই, ১১ তম জেনারেশনের চেয়ে ভালো হবে।

    কিন্তু,

    এর মধ্যে আরেকটা ভেরিয়েশন আছেঃ

    ইন্টেলের তিন চারটা সিরিজের প্রসেসর আছেঃ Core i3, Core i5, Core i7 ইত্যাদি। এক একটা কোর, আরো বেশি পাওয়ারফুল। তাই তোমার বাজেট অনুযায়ী একটা Core সিরিজের প্রসেসর নিবে।

    অন্য দিকে তুমি যদি AMD Ryzen এর প্রসেসর নাও, তাহলে Ryzen 5 বা Ryzen 7 সিরিজের টা নিবে।

    র‍্যাম

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

    বর্তমানে তুমি টার্গেট রাখবে ১৬ জিবির বেশি DDR4 র‍্যাম নিতে। ১৬ জিবি না পারলে অন্তত ৮ জিবির নিচে ডেস্কটপ বা ল্যাপটপ নিও না।

    DDR4 হলো র‍্যাম এর ৪র্থ জেনারেশন। অবশ্যই DDR4 র‍্যামগুলো তার আগের জেনারেশন DDR3, আর DDR2 এর চেয়ে বেটার। এই জিনিসটাও মাথায় রাখবে।

    একটা প্রোগ্রামিং কম্পিউটার বানাতে প্রসেসর আর র‍্যামই সবচেয়ে বেশি গুরুত্বপূর্ন। বাকি সব জিনিসগুলো তোমার পছন্দ অনুয়ায়ী নিয়ে নিবে।

    কত বাজেটের পিসি বা ল্যাপটপ কিনবো?

    ১৬ জিবি র‍্যাম আর লেটেস্ট প্রসেসর এর একটা নতুন পিসি বা ল্যাপটপ এর জন্য বর্তমান বাজারে তোমাকে ৫০-৬০,০০০ টাকা খরচ করতে হবে।

    এখানে স্টারটেক থেকে একটা লেটেস্ট ল্যাপটপ দেখালামঃ

    এখানে আরেকটা প্রি-কনফিগারেশন করা পিসি দিলামঃ

    আমার সাজেস্ট করা কনফিগারেশন অনুযায়ী নতুন একটা ডেস্কটপ বা ল্যাপটপ এর জন্য আনুমানিক ৫০-৬০ হাজার টাকা লাগবে। কিন্তু যদি তুমি আরো ঘাটাঘাটি করো, আর নিজের জন্য কাস্টমাইজ একটা ডেস্কটপ বানাও তাহলে হয়তো আরো কিছু টাকা সেভ করতে পারবে।

    সেকেন্ড হ্যান্ড ল্যাপটপ বা ডেস্কটপ এর ব্যাপারে

    তুমি যদি অভিজ্ঞ পিসি/ল্যাপটপ ইউজার না হয়ে থাকো তাহলে সেকেন্ড হ্যান্ড বা রিফারবিশ ল্যাপটপ না নেওয়াই ভালো। এখন যদি তোমার বাজেট একদমই কম থাকে, তাহলে তুমি একদম নতুন 3rd, 4th জেনারেশনের একটা ডেস্কটপ বানিয়ে নিতে পারবে।

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

    এখন যেহেতু তুমি পিসির একটা ভালো ধারনা পেয়ে গেছো, আগামী কয়েক সপ্তাহ আরো রিসার্চ করে একটা পিসি বা ল্যাপটপ নিয়ে নাও।

  • How I made The Periodic Table with CSS Grid and React

    I was looking into the periodic table and trying to memorize all the elements in order. One afternoon I thought, hey can I make the periodic table with my current CSS skills?

    The periodic table is a collection of elements arranged in an oddly structured way. It has already been built in the past, but the question is, can I do it myself without looking?

    Check out the final version here.

    Making the Layout

    The first task was to arrange all the elements in the peculiar order. The first idea that came into my mind was to make an HTML <table>, and put all the items inside the table cells. But tables are old and messy, not to mention, they are very hard to maintain.

    I know CSS grid, so why not use that?

    At that point I was a bit skeptical, and thought maybe I will have to use flexbox to achieve the task.

    So each of these elements will be a <div>, and I will arrange them with CSS.

    I made the elements like this:

    elements

    I put 2 classes, the element class to make the box, and element-1 to specifically control the position. I would have 118 elements altogether.

    Instead of hand coding all 118 divs for my table, I used the emmet shorthand:

    emmet shorthand

    The table has 18 columns, so I made an 18 column layout with CSS grid.

    css grid

    The Tricky Part

    Okay, so now that I have the container ready, I have to put Hydrogen as the first element and Helium all the way to the right.

    I did this:

    element 2

    And it worked!

    One by one, I arranged the elements in this manner. Since I append the exact element’s number as the class for each cell, I can easily control their positions in the table.

    arranging the elements

    In the periodic table, there is a large gap between elements. Let’s take a look — the original periodic table is very long, about 32 columns:

    32 columns

    To prevent it from being this wide, there are versions of the table which carve out a separate grouping of elements. I had to do the same with my table.

    So what I did was to separate the Lanthanide and Actinides from the markup and from the CSS.

    split
    layout without colors

    After the layout was ready, it’s now time to add the React.

    Filling the Table with Data

    It was all fun and games filling out the first few elements. But soon I realized there are 100s of elements that needed to be added. Do I have to type out ever single one? It would suck the fun and life out of me.

    So why not do the smart thing and pragmatically fill out the info?

    I searched the internet and found one JSON which has information about all the 118 items. So I added this data to my application.

    In the JSON, there is an array of elements. My idea was to reference each element by their order. In an array, the first item starts at 0. That means Hydrogen is at zero, Helium is at 1, Lithium at 2 and so on. To avoid this confusion, I added a placeholder item in the 0th position. So now every element is correctly in the same position as it is in the periodic table.

    Now that I have the data that I need, I can just make one React component to render all the elements and pass in the data as props.

    Initially, I thought I need to pass in the name, the number, and the symbol of the element as the props to the React component.

    element component

    Then I realized I can just pass in the element’s number, and that would be enough to use the JSON data to extract the entire information about that particular element within the <Element /> component.

    elements

    The rest was all about making the app interactive.

    Coloring the Element Groups

    In the Periodic Table, each of the elements are ordered by their category and they are colored. So instead of coloring each of them I put their categories on the CSS too using the React component.

    adding classes
    css styles

    This gave the table that cool look.

    Making the Table Fit The Screen

    To start, I made the table 1000 pixels in wide following the general layout practice. But that made the elements too tiny.

    So I decided to make it fit the screen and utilized viewport width exclusively. I used vw for the element dimensions, text, and headings throughout the app. This helped to maintain the shape across screen sizes and devices. The table is mainly made for desktop screens, but it still looks okay on tablets too.

    responsive design

    Final Touches

    The table is not complete if it just sits there doing nothing. I added a panel which displays additional information about the element when selected. React was great for this job. So why don’t you see it for yourself in action here?

    periodic table version 1

    There are more things happening in the code, why don’t you dig inside and see it yourself? I welcome you to copy the code/fork it from Github.

    The table in 2024

    I made some new changes to the style of the table. Also converted the project from React class components to functional components. Check out the latest version here.

    If you would like to hire me for your project or your coding homework, feel free to DM me @tamalchow on Twitter.

  • পিসির সব ডিটেইলস জেনে নাও

    My Computer, অথবা This PC তে রাইট ক্লিক করে Properties এ ক্লিক করলে পিসির সব ডিটেইলস জানা যায়।

    পিসির সিপিউ এর মডেল আর স্পিড জানা যায়।

    পিসিতে কত জিবি র‍্যাম আছে জানা যায়। বর্তমানে ৮ জিবির উপরে র‍্যাম থাকলে ভালো হয়।

    আর পিসির অপারেটিং সিস্টেম কি ৬৪ বিট না ৩২ বিট সেটাও জানা যায়। গত ১০-১৫ বছরে বের হওয়া সব পিসিই ৬৪ বিটের পিসি। ৬৪ বিট হলে অনেক প্রোগ্রাম আছে যেগুলো আরো বেশি মেমরি এড্রেস করতে পারে।

    বর্তমানের সবচেয়ে বেশি ব্যাবহৃত উইন্ডোজ হলো উইন্ডোজ ১০। এর সাথে নতুন উইন্ডোজ ১১ ও আছে।

    আগের উইন্ডোজ ৭ আর ৮ ভালো পিসি, কিন্তু বর্তমানের অনেক প্রোগ্রামিং টুলস আর নতুন প্রোগ্রাম উইন্ডোজ ১০ ছাড়া রান নাও করতে পারে।