Author: tygas

  • Message sending service

    Design an HTTP API to send SMS messages to end-users. This API has 2 public endpoints. One is to send messages out. The other is to request the status of a previously sent message.

    Received messages are sent through an external SMS relay service that actually delivers the SMS to a phone. The SMS relay will assign its own ID to the message sent to it and will use this ID when reporting status changes back to us. For each status change for a message (like delivered, expired, failed, etc) this relay service calls a private HTTP endpoint on our system to report it. What happens beyond this relay service is outside of the scope of this exercise.

    The traffic is expected to be significant, with spikes, and to be ever-increasing. Customers expect their messages to be delivered. Messages should be stored for auditing and troubleshooting purposes. Design accordingly.

     

  • Pliusai būti vyru

    1. Vyro barzda – tai vyriškas makiažas.

    2. Užtenka vienintelio aksesuaro – laikrodžio.

    3. Grožio salonas – sporto klubo abonementas.

    4. Vonioje užtenka vieno muilo.

    5. Drabužiai tinka 5 metus nes „dar geri“.

    6. Šukuosena visada „gera“, nes užtenka ranka perbraukti.

    7. Kirpėjo kėdėje praleidi 15 minučių ir išeini laimingas.

    8. Niekas neklausia ar priaugai svorio.

    9. Gali supakuoti visą gyvenimą į vieną kuprinę.

    10. Užtenka 10 minučių pasiruošti išėjimui.

    11. Niekas nesitiki, kad prisiminsi progas nes visiems aišku, kad „pamiršai“.

    12. Vienas dezodorantas tinka ir darbui, ir sportui, ir pasimatymui.

    13. Galima sakyti „bus gerai“ ir niekas nesiginčija.

    Minusai

    1. Negalima suklysti komentuojant žmonos outfit’a.

    2. Reikia išmokti atskirti manikiūro pavadinimus.

    3. Kelionėse reikia būti pilno etato fotografu ir videografu!

    4. Besiruošiančios žmonos tenka laukti bent dvi valandas.

    5. Tenka gabenti savo bei antros pusės lagaminus.

    6. Per garsiai valgai.

    7. Per garsiai kvėpuoji.

    8. Negalima skųstis.

    9. Niekas nedovanoja medalio, kai išplauni indus.

    10. Kai išgirstama, kad „mums“ teks renovuoti virtuvę, gerai žinai, kad renovuoti reikės tau.

    11. Miegant gauni visą antklodę tik teoriškai.

  • Da Vinci filmai

    Son of Saul

    „Adomo obuoliai”

    Million Dollar Baby

    Ponas niekas

    Fight club

    Collateral Beauty 

    Perfect Strangers

  • This blog was started long time ago

    This blog was started long time ago

    I bought my first #BTC in 2017, a lot of lessens learned. Shared them with you in this post

  • A Practical Guide to Building Your First SaaS Business

    1. Smart Idea Validation (Free & Most Reliable Way)

    • Talk to 10-20 potential customers
    • “How do you handle this problem today?”
    • “What’s the most annoying part about your current solution?”
    • “How much time/money does this problem cost you?”
    • “When was the last time you faced this issue?”

    2. Build a Super Basic Version First

    • Don’t build everything at once
    • Focus on ONE main feature that solves the core problem
    • Skip fancy features initially
    • Aim to build something in 2-4 weeks

    3. Technical Approach Options:

    For Non-Coders:

    • Use tools like Webflow or Bubble for the whole product
    • Connect them with Stripe for payments

    For Coders (Fastest Route):

    Use a ready-made SaaS boilerplate from https://boilerplatehub.com to save weeks of setup time

    • Most boilerplates come with:
      • User authentication
      • Payment system
      • Basic admin panel
      • Security features
      • Hosting setup guides

    4. What to Focus on First:

    • User signup/login
    • One core feature that solves the main problem
    • Simple way to accept payments
    • Basic admin panel to manage users

    5. Practical Tips:

    • Use platforms like Vercel or Netlify for hosting (they’re simple – you can self-host later. If you want to self-host, use Coolify)
    • Start with a single-person plan to keep things simple
    • Focus on getting 10 paying customers before adding more features
    • Get customer feedback early and often

    Remember: Many successful SaaS products started very basic and grew over time. It’s better to launch something simple that works than to never launch something perfect.

    The key is to start small but start now. You can always add more features later when customers ask for them.

  • Road to GOOD coffee


    Map of good coffees: https://europeancoffeetrip.com/kaunas/





    Sage the Bambino SES450BTR4EEU1 espresso

  • How to Do Things You Hate: Lessons from Peter Hollins

    How to Do Things You Hate: Lessons from Peter Hollins

    It was one of those afternoons. Energy gone. Procrastination wrapping around me like chains. Bills on the table. Emails stacking. My workspace a battlefield of clutter. That’s when I hit play on Peter Hollins’ audiobook, How to Do Things You Hate.

    His voice wasn’t fluff. It wasn’t hype. It was real. Straight talk. Like a fellow warrior saying: Get up. Move forward. Stop hiding.

    And the lessons hit me like a wake-up call.


    1. Accept Discomfort

    Growth is pain. Hollins made it clear: it’s not about avoiding discomfort, it’s about owning it. You don’t need to like the task. You just need to face it. Every distasteful chore is training. Every moment of resistance is a chance to sharpen discipline.


    2. Win Small

    The mountain is climbed one step at a time. Hollins calls it the power of small wins. Break the beast into pieces. One bill. One email. One drawer organized. Stack victories. Momentum builds. Discipline compounds.


    3. Visualize Victory

    Before the fight, see the outcome. Hollins’ visualization exercises aren’t soft—they’re strategic. Picture the relief when the task is done. Picture the order after the chaos. That vision is fuel. It drags you forward when willpower runs dry.


    4. Stay Present

    The dread of a task is heavier than the task itself. Hollins taught mindfulness. Focus on the now. Not the dread. Not the what-ifs. Just the action in front of you. One breath. One movement. One stroke of the pen, one click of the key.


    5. Build the Growth Mindset

    Fixed mindset says, I can’t. Growth mindset says, I’ll learn. Hollins hammered this home. Every hated task is training. Every challenge is a chance to adapt, evolve, and strengthen.


    6. Prioritize with Clarity

    Chaos kills momentum. Clarity builds it. Hollins showed how to strip away noise and zero in on what matters most. Order the battlefield. Attack the high-value targets first.


    7. Reward Discipline

    Discipline is the foundation. But reward locks it in. Hollins stressed the power of positive reinforcement. Finish the job, then enjoy the win. Not before. Not during. After. That’s how you train the mind to embrace the grind.


    Final Thought

    Doing what you hate isn’t about tricks or hacks. It’s about discipline. It’s about confronting discomfort, stacking small wins, and owning the process. Hollins’ words are a reminder: stop waiting to feel motivated. Start moving. Motivation follows action.

    PS: take action right now:
    ☑︎ Start treating every hated task as training, a chance to learn, adapt, and grow.
    Write down this task now!

    Whats the task?

  • How to Change Anyone’s Mind Without Forcing It

    How to Change Anyone’s Mind Without Forcing It

    Lessons from The Catalyst by Jonah Berger

    Change isn’t about pushing harder. It’s about removing obstacles. Jonah Berger’s book The Catalyst: How to Change Anyone’s Mind gives a clear framework. Instead of brute-force persuasion, you work like a strategist — identify friction, remove resistance, and create momentum.

    Here’s the action plan, broken down into Berger’s REDUCE framework — optimized so you can apply it, not just read it.


    1. Reduce Reactance

    The Problem: Push people too hard, and they push back harder. It’s human instinct — a defense of autonomy.

    The Move: Stop shoving. Give options. Ask questions instead of giving orders. Frame change as an invitation, not a command.

    Action Step:

    • Replace “You must” with “What if?”
    • Offer two paths forward so the choice feels theirs.

    2. Ease Endowment

    The Problem: People cling to what they already have. It feels safer. It feels “theirs.”

    The Move: Show them what they gain by letting go. Shift focus from loss to advantage.

    Action Step:

    • Use contrast: “Right now you get X. With this, you gain Y + Z.”
    • Tell stories of people who moved on and thrived.

    3. Shrink Distance

    The Problem: Big leaps feel impossible. Too far. Too risky.

    The Move: Close the gap. Break change into smaller, achievable steps that build momentum.

    Action Step:

    • Split the vision into short-term wins.
    • Highlight the next 1% improvement, not the 100% transformation.

    4. Alleviate Uncertainty

    The Problem: Fear of the unknown locks people in place.

    The Move: Make the future less scary. Replace doubt with clarity and proof.

    Action Step:

    • Give demos, examples, and test runs.
    • Show case studies of success.
    • Remove as much “unknown” as possible.

    5. Find Corroborating Evidence

    The Problem: One voice isn’t enough. People trust what others already believe and do.

    The Move: Stack the proof. Use social validation.

    Action Step:

    • Share testimonials.
    • Point to peer adoption: “Others in your position are already doing this.”

    6. Become the Catalyst

    The Problem: Forcing creates resistance. Guiding creates adoption.

    The Move: Think like a catalyst. Don’t push. Clear the path.

    Action Step:

    • Focus on barriers, not brute force.
    • Ask: “What’s blocking them from change?” Then remove it.

    7. Apply the REDUCE Framework Daily

    The System: Berger condenses it into REDUCE — your checklist for driving change:

    • Reduce Reactance
    • Ease Endowment
    • Distance (shrink it)
    • Uncertainty (alleviate it)
    • Corroborating Evidence

    Action Step:

    • Before pitching an idea, walk through REDUCE. Identify which barrier is strongest — and tackle that first.

    Final Takeaway

    Changing minds isn’t about force. It’s about discipline. Remove barriers. Build trust. Shrink fear. Add proof. The result? Change becomes natural, not resisted.

    If you want to lead — whether in business, leadership, or life — learn to be the catalyst, not the bulldozer.


  • GPT prompts principles backed by testing

    1. Use Direct, Non-Polite Prompting

    Description: Skip fluff like greetings or politeness—jump straight to what you want. Think of it like giving orders to a tool, not chatting with a friend. Why It Works: Reduces token waste and focuses the LLM on the core task, improving efficiency (per studies on prompt brevity in models like GPT-4 and Grok). Example: Instead of “Could you please explain quantum computing politely?”, use: “Explain quantum computing. No fluff.”

    2. Get Straight to the Point

    Description: Avoid phrases like “I would like…”—state your request clearly and immediately, as if you’re an expert briefing another expert. Why It Works: Minimizes ambiguity and aligns with zero-shot prompting, where concise inputs yield precise outputs. Example: “Generate a React component for a responsive navbar using Tailwind CSS. Include hooks for state management.”

    3. Break Down Complex Tasks

    Description: Split big jobs into smaller steps, prompting interactively like a conversation where each response builds on the last. Why It Works: Mirrors iterative development in engineering; latest CoT variants use this for complex reasoning without overwhelming the model. Example: First prompt: “Outline steps to build a full-stack app with Next.js and MongoDB.” Follow-up: “Now expand step 3: Set up API routes.”

    4. Embrace Precision

    Description: Use exact words, avoid vague terms like “blah,” and focus on positive, specific instructions to guide the LLM tightly. Why It Works: Precision reduces hallucinations; recent benchmarks show it boosts accuracy in factual or technical tasks. Example: “Calculate the area of a circle with radius 5. Use formula \(A = \pi r^2\). Output in JSON: {‘area’: value}.”

    5. Explain Like I’m 11 (ELI11)

    Description: Simplify concepts to a smart kid’s level—use everyday examples, short sentences, and analogies without dumbing down the core idea. Why It Works: Builds understanding step-by-step; combines with CoT for educational prompts. Example: “Explain blockchain like I’m 11: Use a lemonade stand analogy. Then add a test with 3 questions, no answers.”

    6. Explain Like to a 5-Year-Old (ELI5)

    Description: Break it down even simpler, like telling a story to a little kid—use basic words, fun examples, and no jargon. Why It Works: Forces clarity; useful for initial conceptual grasps before diving into technical details. Example: “Explain JavaScript promises like to a 5-year-old. Use a story about waiting for ice cream.”

    7. Add a Tip Incentive

    Description: Motivate the LLM by promising a fictional “tip” for better output, framing it as a reward for quality. Why It Works: Leverages psychological prompting (e.g., from Anthropic’s research on incentives improving creativity). Example: “Optimize this CSS grid layout for mobile. I’m going to tip $200 for a better solution!”

    8. Format Prompts Structuredly

    Description: Organize prompts with headers like ###Instruction###, ###Example###, and ###Question### to separate sections clearly. Why It Works: Structured inputs guide parsing in LLMs, reducing errors (inspired by XML-like tagging in recent prompt frameworks). Example:

    ###Instruction###
    Write a blog post on React hooks.
    ###Example###
    Start with: "Hooks changed React forever..."
    ###Constraints###
    Keep under 500 words.
    
    9. Incorporate Details (Context, Examples, Constraints, Input Data)

    Description: Always add relevant background, samples, rules, or data to ground the prompt. Why It Works: Enhances few-shot learning; latest techniques use this for in-context learning without fine-tuning. Example: “As a senior front-end engineer, refactor this code. Context: It’s for a e-commerce site. Constraints: Use TypeScript, max 80 chars per line. Input: [paste code here].”

    10. For Writing Tasks (Essays, Texts, etc.)

    Description: Specify the format (e.g., essay, blog) and style, then provide structure or key points. Why It Works: Directs creative output; combines with role-playing for consistent tone. Example: “Write a casual blog post on Vue vs. React. Structure: Intro, pros/cons, conclusion. Assign role: You’re a witty tech blogger.”

    11. Use Delimiters

    Description: Mark sections with symbols like — or “` to separate input parts clearly. Why It Works: Helps LLMs parse multi-part prompts; a staple in advanced engineering like ReAct prompting. Example:

    Task: Summarize this text.
    ---
    Text: [paste text here]
    ---
    Output format: Bullet points.
    
    12. Add a Follow-Up Question

    Description: End responses with a question to encourage iteration, like checking understanding or inviting more input. Why It Works: Promotes interactive dialogue; aligns with conversational AI best practices. Example: After generating code: “Human, is that the answer? Does that make sense? Do you have questions to ask or develop?”

    13. Allow Clarifying Questions

    Description: If a prompt is unclear, have the LLM ask for details before proceeding. Why It Works: Reduces errors in ambiguous scenarios; part of agentic prompting in tools like LangChain. Example: “Design a UI component. If anything is unclear, ask clarifying questions first.”

    14. Inquire with Specifics (Who, What, When, Where, Why, How)

    Description: Frame questions using these words to dig into details precisely. Why It Works: Structures information retrieval; enhances factual accuracy in search-like tasks. Example: “Research WebAssembly: What is it? How does it work in browsers? Why use it for front-end?”

    15. Teach with a Test

    Description: Explain a topic, then add a quiz at the end without answers to test comprehension. Why It Works: Reinforces learning; combines ELI5/ELI11 with active recall techniques. Example: “Teach me about CSS Flexbox and include a test at the end, but don’t give me the answers.”

    16. Assign a Role

    Description: Give the LLM a persona (e.g., expert, critic) to shape its responses. Why It Works: Improves consistency; a core of role-based prompting in models like Grok. Example: “You are a sarcastic code reviewer. Critique this JavaScript function.”

    17. Repeat Key Phrases

    Description: End or emphasize by repeating a crucial instruction for reinforcement. Why It Works: Aids memory in long contexts; from repetition techniques in prompt optimization. Example: “Generate secure API endpoints. Prioritize security. Prioritize security.”

    18. Use Chain-of-Thought (CoT)

    Description: Instruct the LLM to think step-by-step before answering. Why It Works: Boosts reasoning; foundational in papers like “Chain-of-Thought Prompting Elicits Reasoning in Large Language Models.” Example: “Solve this bug in React state. Step 1: Identify issue. Step 2: Propose fix. Step 3: Code it.”

    19. Combine CoT with Few-Shot Prompts

    Description: Provide 2-3 examples, then add CoT for the new task. Why It Works: Merges exemplars with reasoning; state-of-the-art for tasks like code generation. Example: “Example 1: Input: Sum 2+3. CoT: Add them -> 5. Now, for 4*5: Think step-by-step.”

    20. Prompt for Styled Output

    Description: Request output in a specific style, like “drunken” or “formal to casual.” Why It Works: Controls tone; useful for creative or corrective writing. Example: “Rewrite this formal email in a drunken style: [paste text].”

    21. Correct Text with Style Changes

    Description: Fix errors while optionally shifting style (e.g., formal to casual), revising paragraph by paragraph. Why It Works: Iterative editing; aligns with diffusion-like prompting for text refinement. Example: “Revise this paragraph casually without changing core meaning: [paste text]. Do every paragraph.”

    22. Handle Complex Code

    Description: For intricate code, specify modifications or comparisons to existing files. Why It Works: Supports modular engineering; integrates with tool-calling for code tools. Example: “Modify this file to add authentication. Different from original: Use JWT instead of sessions. [paste code].”

    23. Create or Modify Files

    Description: Instruct creation or editing of files, inserting code as needed. Why It Works: Simulates IDE workflows; pairs with serialized output for automation. Example: “Create a new TypeScript file: index.ts. Insert this code: [paste snippet]. Format with Prettier, 80-char width.”

    24. Use Direct Prompting for General Tasks

    Description: Keep prompts straightforward and action-oriented for everyday queries. Why It Works: Baseline for zero-shot; efficient for quick info or generation. Example: “List top 5 front-end trends in 2025.”

    25. Find Information and Keep Conversation

    Description: Search or recall info on specific words/topics, then continue the dialogue. Why It Works: Uses tool-calling (e.g., web search); maintains context in multi-turn chats. Example: “Find on the web: Latest React 19 features. Then ask: What do you want to know next?”

    26. Chain Requirements

    Description: List must-follow rules in sequence to ensure compliant output. Why It Works: Enforces constraints; similar to rule-based prompting in safety-aligned models. Example: “Generate HTML: 1. Use semantic tags. 2. Add ARIA attributes. 3. Validate for accessibility.”

    27. Use Tools or Serialize Output

    Description: Invoke tools (e.g., APIs) when needed, and format output as serialized data like JSON. Why It Works: Enables integration with external systems; from agentic frameworks like AutoGPT. Example: “Use a math tool to solve \(x^2 + 3x – 4 = 0\). Output in JSON: {‘roots’: [values]}.”Human, is that the answer? Does that make sense? Do you have questions to ask or develop?