jlesk
The benchmark might seem like apples-to-oranges, but they both do templating & routing, which is what is being tested.
I also address this on the benchmark page:
Why compare a language to a framework?
1) THT takes a “batteries included” approach by providing essential web framework features.
2) Some might be worried that running a transpiled language would be too slow to run in production, and Laravel is arguably the best example of a production-ready PHP framework.
Also, yes it is essentially a new language. I don't expect anyone to rewrite large PHP applications in it, but people might consider it for new projects.
THT v0.7 – Redesigning PHP for better security and usability
There are all kinds of permutations like that which can look like arbitrarily bad UI decisions if you don't know the greater context.
THT v0.6.1 – a language that fixes everything wrong with PHP
THT v0.6.0 – PHP transpiler with updated syntax and secure defaults
THT v0.5.0 – A language that compiles to PHP for improved security and usability
Might want to size it down and run it through TinyPNG. :)
But I also like the approach here of using Turtle as a way to introduce JavaScript syntax. :)
It also has a right directionality to imply that it has scope until the end of the line.
Triple-arrow is the same idea, but uses the convention that triple-characters are common for delineating multi-line blocks.
I can understand that it might not seem useful to you if you already have a stack you've invested in, or it just doesn't fit the kind of projects you are working on.
But I just wanted to respond to a few things. :)
> A) Come from a javascript background
It targets all web developers, who are all generally familiar with JavaScript. It aims to be another tool, not a total replacement for all projects.
> B) Want to deploy on cheap hosters where node isn't available?
Shared hosting is still a very popular way to run websites. And node is often overkill for basic CRUD sites.
> C) Don't care about performance
There is a big difference between not needing to support 100+ requests per second and "not caring". :) Out of the box, PHP is fast enough for a lot of apps, and the overhead of THT is not enough to be noticeable at that scale.
> don't mind the additional complexity of the transpiler
There are no build steps, so the extra complexity just involves running the initial setup script. After that, you drop in new files and update them like you would with PHP. Ideally, it won't feel more complex than any other framework.
> Can this even leverage the enormous PHP ecosystem?
This is on the roadmap. Though there are still plenty of projects that don't use 3rd party libraries and could be built with THT as it is today.
I personally have never needed to use composer, etc. in my projects, but it's still something I am looking to support.
Thanks!
Sometimes you just need a handful of dynamic pages that you want to put up on a shared host somewhere. PHP is great for that.
THT v0.2.0 – a language that compiles to PHP
https://crockford.com/javascript/tdop/tdop.html
I referenced it often when I implemented THT. (https://tht.help)
https://jobs.netflix.com/culture
It's not just marketing fluff. It really does a good job of reflecting what it's like to work there, and is taken seriously by everyone from the top down.
As I mentioned elsewhere in this thread, it's not a competitive environment, and I've experience very little politics and drama. Those things are explicitly counter to the culture.
As for long hours, while the work day can be pretty intense, the office is usually empty by 5-6pm.
Hope that helps.
For example, from our culture page: "We have no bell curves or rankings or quotas such as “cut the bottom 10% every year.” That would be detrimental to fostering collaboration, and is a simplistic, rules-based approach we would never support."
https://jobs.netflix.com/culture
Our culture can feel intimidating, especially if you have any degree of imposter syndrome, but with very few exceptions, my colleagues and managers have always been supportive and really great to work with.
From our culture page:
"...there are no “brilliant jerks.” The cost to teamwork is just too high. Our view is that brilliant people are also capable of decent human interactions, and we insist upon that."
Functions that do risky things (Database, System calls, etc.) only accept LockStrings and are responsible for escaping, so all you have to do is provide the placeholders.
In actual use, you rarely interact with the names anyway -- you use `true` and `false` as values like most other languages.
A few principles:
- Acknowledging that the user is probably familiar with other languages, so stay within those conventions when possible. This is inspired by Jakob Nielsen's maxim that web designers should acknowledge that their users send 99% of their time on other websites.
- Making the most common activities the easiest. Larry Wall refers to this as applying Huffman coding to the syntax itself.
- Safe defaults. Making dangerous operations less convenient than the safe path. PHP has pretty much the opposite behavior, where many of the default design choices lead to security issues.
- Cognitive Load. Minimizing visual noise and the number of micro-decisions the user has to make. i.e. There should be one (good) way to do it.
- Preferring shorter, clearer terms over technical jargon. e.g. I use the terms "Flag" instead of "Boolean" and "List" instead of "Array". One can get pedantic over the exact meanings of symbols, but during the actual act of programming, simpler terms can help reduce friction.
The project is at https://tht.help if anyone is curious.
Show HN: THT – a cleaner, safer language that compiles to PHP
Show HN: Turtle graphics app in Coffeescript & Canvas
I personally launched Fabletop.com a couple of months ago, but the approach is a bit different, focusing more on a robust chat system, and less on the battlemat.
Good luck to you guys!
Show HN: Tabletop Roleplaying with jQuery & Node.js
I've just launched Fabletop, a web-based "virtual tabletop" for roleplaying. It was created with jQuery on the front-end, and Node on the back end.When you register, you get your own "table" page, which is a kind of persistent chatroom where you can GM games. The miniatures, dice, battlemat, and chat system are all built in.The default ruleset (d6 dice pool + trait-based characters) is...
But when I tried the current isometric style on a whim, it managed to solve all of the problems I was trying to address. Probably because I use a hybrid approach: only the underlying battlemat tiles are isometric. The miniatures are flat, slightly-transparent stand-ups and always face the player.
On the topic of javascript templates, I tried Jaml for a while because I really wanted to have templates that could be cached on the client-side, but the function-based approach was really cumbersome. I ended up creating a server-side pre-processor that converts Haml to vanilla javascript functions that just build the output using string concatenation. These are called at run-time by underscore's template function. Overall, I'm totally happy with it so far.