Founder at TyroLabs, TyroPlugins & HappyMonster. Built Tyro-Dashboard, Tyro-Login, Tyro-RBAC & Tyro-Checkpoint for Laravel. Creator of TyroPress.

Joined November 2007
145 Photos and videos
Every time you create a new Laravel application, the installer asks a series of questions: - Which starter kit would you like to use? - Which database are you using? SQLite, MySQL, or PostgreSQL? - Would you like to install Boost? - Would you like to use Pest? - Would you like to install and build NPM dependencies? - Would you like to initialize a Git repository? These questions are useful, but if you're creating Laravel projects regularly, answering them repeatedly becomes tedious. If your preferred setup includes: - SQLite - Pest - Boost - NPM dependencies installed and built - Git initialized You can skip all the prompts and create a new project with a single command: laravel new --database=sqlite --boost --npm --pest --silent --git my-project Prefer MySQL or PostgreSQL? Just replace sqlite with mysql or pgsql. You can make it even more convenient by creating an alias: alias laravelx="laravel new --database=sqlite --boost --npm --pest --silent --git" Then create a new project like this: laravelx my-project One command. No questions. Your project is ready. Small productivity improvements may not seem important individually, but they save a surprising amount of time when repeated every day. Keep this one handy. It can make your Laravel workflow a little smoother. #Laravel #PHP #WebDevelopment #Programming #DeveloperProductivity #SoftwareDevelopment
1
3
59
I prefer using @CommandCodeAI because - The team is highly responsive and genuinely listens to user feedback. - Excellent value for money. - Their Harness CMD implementation is genuinely impressive. - The $1 Go Plan is hard to beat. - They consistently ship new features and updates.
1
27
Facebook is down!!
2
6
1,159
টাইরো ম্যাজিক লগিন - পুরাই জোশ 😁 tyroplugins.com/magic-login/
1
28
Created a TVC style ad for Tyro Dashboard - github.com/hasinhayder/tyro-…
1
63
দারুণ একটা ঘটনা কিন্তু ঘটেই গেছে - youtube.com/watch?v=dYMGkUyU…
2
45
এআই নিয়ে কাজ করতে হলে, মডেলের পাশাপাশি হারনেসও কিন্তু অনেক ইম্পর্ট্যান্ট। আমরা বেশিরভাগ সময়েই শুধু মডেল নিয়ে কথা বলি। কিন্তু মডেল আসলে পুরো ইকুয়েশনের শুধু একটা অংশ। আসল পার্থক্য বেশিরভাগ সময়েই আসে ভালো একটা হারনেস থেকে - প্রম্পটিং - কনটেক্সট ইঞ্জিনিয়ারিং - টুল অর্কেস্ট্রেশন - মেমোরি - ইভ্যালুয়েশন - ওয়ার্কফ্লো / এজেন্ট ডিজাইন একটা বেটার মডেল তো অবশ্যই হেল্প করে। কিন্তু একটা বেটার হারনেস সেই মডেল থেকে বেস্ট আউটপুট বের করে আনার জন্য একদম মাস্ট। আপনি খেয়াল করলে দেখবেন যে সেম মডেল উইথ সেম প্রম্প্ট একটা হারনেস এ একরকম আউটপুট দিচ্ছে, আরেক হারনেস এ আরেকরকম। সো বেস্ট এআই প্রোডাক্টস আসলে শুধু কোন মডেল ইউজ করা হচ্ছে তার উপরেই ডিপেন্ড করে না, বরং মডেলের চারপাশে কী সিস্টেম বিল্ড করা হয়েছে, এবং সেগুলো দিয়ে কিভাবে মডেল এক্সেস করার হচ্ছে তার উপরও অনেকখানি ডিপেন্ড করে।
2
59
Does anyone else feel like the new MiniMax M3 Token Plan pricing is a huge disappointment?
2
2
204
একদিন ক্লায়েন্ট এসে বলল, আমার সমস্ত ডেটা এনক্রিপ্টেড থাকা লাগবে। কিন্তু আমি একদম পারফেক্টলি সার্চ করতে চাই। ভাবেন একবার। খুবই ইন্টারেস্টিং কেস। ডেটা থাকবে এনক্রিপ্টেড, আবার সার্চেবলও হতে হবে - যেটা আসলে ন্যাচারালি একদমই পসিবল না। তাহলে এই সমস্যা কিভাবে সলভ করা যায়? আমার লাইফে আমি প্রথম এই জিনিসটা নিয়ে ডিল করেছিলাম বেশ কয়েক বছর আগে। R&D করতে করতে তখন একটা ইন্টারেস্টিং কনসেপ্ট বের হলো যেটার নাম হলো টোকেনাইজড হ্যাশ (Tokenized Hash)। অর্থাৎ, আপনার মেইন ডেটা এনক্রিপ্টেড থাকলেও, এই ডেটার মধ্যে প্রতিটা ওয়ার্ড একেকটা টোকেন হিসেবে কাউন্ট হয়ে সেগুলোর হ্যাশ (Hash) তৈরি হবে এবং সেই হ্যাশ গুলো ডেটাবেসে সেভ থাকবে। এখন আপনারা জানেন যে হ্যাশিং হচ্ছে বেসিক্যালি একটা ওয়ান ওয়ে প্রসেস। হ্যাশ থেকে কখনো মূল তথ্য বের করা সম্ভব নয়, রেইনবো টেবিল (Rainbow Table) ছাড়া। এবং সেটাও অনেক কমপ্লিকেটেড একটা প্রসেস। সো, এই জিনিসটা যখন আমরা ইমপ্লিমেন্ট করলাম, সবকিছু একদম পারফেক্টলি সবকিছু কাজ করা শুরু করল। ক্লায়েন্ট একটা ওয়ার্ড দিয়ে সার্চ করছে আর সাথে সাথে রেসাল্টও দেখতে পাছে, সে তো মহাখুশি। বলেন তো সার্চের সময় আমরা কি করছি? যেই ওয়ার্ড দিয়ে সার্চ হচ্ছে আমরা সেই ওয়ার্ড এর হ্যাশ তৈরি করে সেই হ্যাশ ডেটাবেসে চেক করছি। এবং সেই হ্যাশ ডেটাবেজে পেয়ে গেলে সেই হ্যাশের সাথে কোন কোন রেকর্ড, অর্থাৎ কোন কোন এনক্রিপ্টেড রেকর্ড রিলেটেড, আমরা সেগুলোও পেয়ে যাচ্ছি। এরপরের কাজ একদম সহজ - জাস্ট সেগুলোকে ডিক্রিপ্ট করে ক্লায়েন্টকে দেখানো। ইন্টারেস্টিং একটা প্রবলেম আর তার সাথে সেই রকম ইন্টারেস্টিং একটা সলিউশন, তাই না? ডেটাও এনক্রিপটেড থাকল, আমরা কোনকিছু এক্সপোজও করলাম না, এদিকে সার্চও করা গেল পারফেক্টলি। দারুণ না? আর মজার ব্যাপার হচ্ছে, প্রতিটা টোকেনের হ্যাশ একেকটা রো হিসেবে ডেটাবেসে সেভ হচ্ছে, সেগুলোর উপরে ইন্ডেক্সিং হচ্ছে এবং সার্চ ও একদম ফাস্ট কাজ করছে।
1
103
This, perfect!
May 30
i have seen enough proof now that using a coding agent is a deep skill it's confusing because the people you see heavily using them produce horrible results but that's because it's a skill! you can get better and the ceiling seems pretty high - this is very exciting to me
71
Hasin Hayder retweeted
Me using Claude Opus 4.8 to rename a file

1,729
9,368
75,780
44,281,711
One day, a client came to me with an interesting requirement - “I want all of my data to remain encrypted, but I also want perfect search functionality.” here is how we solved it - it's very interesting linkedin.com/posts/thestoryt… #Encryption #SoftwareDevelopment
1
68
Hasin Hayder retweeted
how did we make deepseek outperform opus 4.7? i've been thinking about why "open model bad at tool calling" is almost always a harness problem, not a model problem. context: spent the two days looking at billions of tokens in @CommandCodeAI (tb open source ai cli) using deepseek. I ended up writing a tool-input repair layer. the trigger was watching deepseek-flash fail on the simplest /review run, every shellCommand and readFile call bouncing back with a raw zod issues blob, the model unable to recover because the error wasn't in a form it could read. by the end deepseek v4 pro was beating opus 4.7 6/10 times on our internal evals. a few things i learned that feel general: 1/ the failure modes aren't random they're a small finite compositional set. across deepseek-flash, deepseek v4 pro, glm, qwen, the same four mistakes repeat almost exactly: - sending `null` for an optional field instead of omitting it - emitting `["a","b"]` as a json *string* instead of an actual array - wrapping a single arg in `{}` where the schema expected an array (an "empty placeholder") - passing a bare string where an array was expected (`"foo"` instead of `["foo"]`) four repairs, ~30-100 lines each, ordered carefully (json-array-parse must run before bare-string-wrap or `'["a","b"]'` becomes `['["a","b"]']`). that is the whole catalogue. when i hear "this open source model can't do tool calls" i now assume one of those four, and so far that's been right ~90% of the time. 2/ the funniest failure mode is also the most revealing. deepseek-flash, when asked to edit or write a file, sometimes emits the path as a *markdown auto-link*: filePath: "/Users/x/proj/[notes.md](http://notes. md)" our writeFile tool obediently trued creating files literally named `[notes.md](http://notes .md)` until we caught it. this is not a hallucination. it's the post-training chat distribution leaking through the tool boundary the model has been rewarded for auto-linking in conversational output, and is applying that prior in a context where it makes no sense. the fix is two regex lines that unwrap only the degenerate case where link text equals url-without-protocol real markdown like `[click](https://x .com)` passes through untouched. this is also conditioning of their own tools during RL which were different from all other tools we write and ofc can't predict. "tool confusion" is a more useful frame than "capability gap." the model knows how to format a path. it just hasn't been told clearly enough that this path is going to fopen, not into a chat bubble. so we encode that hint at the schema level `pathString()` instead of `z.string()` and the leak is plugged for every path field at once. 3/ the design choice that mattered was inverting preprocess-then-validate to validate-then-repair. my first attempt was the obvious one: a preprocessing pass that normalized inputs (strip nulls, parse stringified arrays, etc.) before zod ever saw them. it broke immediately, writeFile content that *happened* to be json-shaped got rewritten before it hit disk. silent corruption, easy to miss in a smoke test. then i made it less greedy - parse the input as-is. if it succeeds, ship it. valid inputs are never touched. - on failure, walk the validator's own issue list. for each issue path, try the four repairs in order until one applies. - parse again. on success, log `tool_input_repaired:${toolName}`. on failure, log `tool_input_invalid:${toolName}` and return a model-readable retry message. the structural insight here is: when you preprocess, you encode a prior about what's broken. when you let the validator complain first, the schema is the prior, and you only spend repair budget at the exact paths the schema actually disagreed at. the validator is doing the work of localizing the bug for you. it's the same shape as cheap-then-careful everywhere else try the fast path, fall back on evidence. (this also gives you per-tool telemetry for free. you can watch repair rates per (model, tool) and notice when a model regresses on a specific contract before users do.) 4/ shape invariants and relational invariants need different fixes. the four repairs above all handle shape problems wrong type, missing key, wrong container. but read_file had a *relational* invariant: "if you provide offset, you must also provide limit, and vice versa." deepseek kept calling `readFile({ absolutePath, limit: 30 })` and getting an `ERROR:` back. you can't fix this with input repair, because each field is independently valid the bug is in the relationship between them. so i taught the function the model's intent instead. `limit` alone → `offset = 0`. `offset` alone → `limit = 2000` (matches common read tool ops default). then surfaced the decision back to the model in the result: "Note: limit was not provided; defaulted to 2000 lines. To read more or fewer lines, retry with both offset and limit." no `Error:` prefix, so the tui doesn't paint it red. the model sees what we picked and can self-correct on the next turn if our guess was wrong. transparency over silent magic wins big. repair where you can. extend semantics where you can't. surface the choice either way. zoom out: a lot of what looks like model capability is actually contract design. a strict schema is a choice with a cost it filters out noise, but it also filters out recoverable noise from any model that hasn't memorized the exact json contract you happened to pick. the largest commercial models eat that cost invisibly and are linient on tool calling because they've seen enough of every contract during pretraining; open models pay it loudly and get dismissed for it. the harness is where you mediate between distributions. four small repairs (i'm sure more to follow as we have three more merging today), two regex lines for auto-links, one relational default, one prefix change. the model didn't change. the contract got more forgiving in exactly the places it needed to be. deepseek v4 pro now beats opus 4.7 6/10 times on our internal evals. imo "skill issue" applies to the harness more often than the model.
Wow I just made DeepSeek V4 Pro beat Opus 4.7 6/10 times in our internal evals by auto repairing many of its quirks in tool calling. It’s performing super solid for such a cheap model.
73
160
1,568
1,739,558
Essential #Laravel Terms
3
82
Alibaba has stopped the free tier of Qwen CLI. You will be missed, qwen. #ai
4
184
আমাদের নতুন ব্লগিং প্লাটফর্ম টাইরোপ্রেস ফাইনালি রিলিজ দেয়ার সময় হয়ে এসেছে, Yayyyy!!! আমরা প্রথমে ২০ জনকে বেটা এক্সেস দিতে চাই। তাদের ফিডব্যাকের উপরে বেজ করে একটু ফাইন টিউন করার পরে সবার জন্য অ্যাভেইলেবল হয়ে যাবে। Beta Access Request Link - forms.gle/u9wZsKbunKEYvFHM7
1
4
211