Need advice about which tool to choose?Ask the StackShare community!

HTML5

149K
127.1K
+ 1
2.2K
Ruby

41.9K
21.6K
+ 1
4K
Add tool

HTML5 vs Ruby: What are the differences?

1. Syntax: HTML5 is a markup language used for creating the structure of web pages, focusing on elements arranged in a hierarchical manner, while Ruby is a programming language known for its elegant and concise syntax, utilizing keywords and methods to define functionality. 2. Interactivity: HTML5 primarily deals with creating static web pages with limited interactivity, relying on JavaScript for dynamic behavior, whereas Ruby allows for building interactive web applications by using server-side logic and frameworks like Ruby on Rails. 3. Type System: HTML5 does not have a built-in type system and relies on attributes to define data types, while Ruby is strongly typed, requiring explicit declarations of variable types and allowing for type checking during runtime, ensuring code robustness. 4. Execution Environment: HTML5 code is executed within the browser environment, rendering web content to be displayed to users, whereas Ruby code is executed on a server-side environment, processing requests and generating dynamic responses for clients. 5. Use Cases: HTML5 is mainly used for front-end development, focusing on creating user interfaces and content presentation, while Ruby is versatile, being utilized for both front-end and back-end development, handling data processing, business logic, and server-side operations. 6. Community and Ecosystem: HTML5 has a vast community and extensive documentation due to its widespread use in web development, while Ruby has a dedicated community focused on software development, providing libraries, frameworks, and tools to enhance productivity.

In Summary, HTML5 and Ruby differ in syntax, interactivity, type system, execution environment, use cases, and community support.

Advice on HTML5 and Ruby
Caue Carvalho
Needs advice
on
GolangGolangPythonPython
and
RubyRuby

Hello!

I'm a developer for over 9 years, and most of this time I've been working with C# and it is paying my bills until nowadays. But I'm seeking to learn other languages and expand the possibilities for the next years.

Now the question... I know Ruby is far from dead but is it still worth investing time in learning it? Or would be better to take Python, Golang, or even Rust? Or maybe another language.

Thanks in advance.

See more
Replies (8)
Angel Ramirez
Recommends
on
GolangGolangPythonPython
at

Hi Caue, I don't think any language is dead in 2022, and we still see a lot of Cobol and Fortran out there, so Ruby is not going to die for sure. However, based on the market, you'll be better off learning Goland and Python. For example, for data science, machine learning, and similar areas, Python is the default language while backend API, services, and other general purpose Goland is becoming the preferred.

I hope this helps.

See more
Recommends
on
GolangGolangPythonPython

I feel most productive using go. It has all the features I need and doesn't throw road blocks in your way as you learn. Rust is the most difficult to learn as borrow checking and other features can puzzle a newcomer for days. Python is a logical next step as it has a huge following, many great libraries, and one can find a gig using python in a heartbeat. Ruby isn't awful, it's just not that popular as the others.

Another reason to use python is that it is not compiled. You can muck around in the interpreter until you figure things out. OTOH, that makes it less performant. You really need to think about your use cases, your interest in lower-lever versus high-level coding, and so on.

See more
Roman Glushko
Machine Learning, Software Engineering and Life · | 4 upvotes · 74.4K views
Recommends
on
GolangGolangPythonPythonRustRust

I enjoy coding in Python. I think it's minimalistic and readable syntax and lang features are just unparalleled. They are perfect for prototyping and for the software engineering in general. If I'm not wrong Gitlab marked Python as #2 popular language after JavaScript. Beyond that, Python ecosystem and areas of usage are enormous. In areas like ML/DL, it's important to know Python to leverage variety of existing tools and frameworks.

Then, I have learned and worked with Golang. I use it where I think I would need a slightly better performance than in Python. Plus, relatively small and self-contained executable is a great thing to have. If you plan to write distributed systems, extend Kubernetes or do similar things I think Golang is a great choice. It's also simple and straightforward, especially when you want to do effective multithreading. Although I don't like that Golang is more low-level than Python. Sometimes I feel like I need to implement myself too much things.

Now, about Rust. It's my second try to learn Rust. First time I decided to learn Golang as I understood it in 30mins or so while I was struggling to compile/do anything meaningful there for quite a bit. So I personally don't think Rust is super easy. I have got back to learning Rust as it's going to fill one of gaps in my problem solving toolkit - let me write low-level system programs (e.g. linux kernel modules). I don't want to learn "obsolete" C/C++ (my reasons are similar to why Google has recently introduced Carbon - a replacement for C/C++ codebases). If you are not going to tight your life with system-like programming, Rust may be an overkill for you.

Finally, I have never coded in Ruby, so are not going to comment it.

See more
Recommends
at

Since you are very experienced, picking up a language will not take you more than a week. Rust is a very new language. Many startups are still experimenting with it. Golang is very popular nowadays. You can see a lot of golang jobs in the market. The best part is, compiled code is single binary and has a minimal footprint. Rails is a compelling framework; believe me, many websites like Shopify, GitHub, GitLab, etc., are powered by the rails framework. You can also leverage the power of metaprogramming in Ruby. Python is memory and CPU intensive. It is not as performant as the other three. If you want to go into Data Science, Python is the language. Good luck, buddy. Feel free to connect with me: https://twitter.com/avirajkhare00

See more
Recommends
on
PythonPython

Because it opens endless possibilities you can do anything and everything you want to. from ai to app development to web development.

See more
Recommends

I'm almost same position as you. 8 years same company with c#. I tried both Python and Golang. I like working with Golang. Check this litte go doc. After reading this document and following its examples, I decided to work with "go" https://www.openmymind.net/assets/go/go.pdf

See more
Recommends
on
GolangGolangPythonPythonRubyRuby

it is highly recommended to take a look at that survey

https://survey.stackoverflow.co/2022/

See more
A Nielsen
Fullstack Dev at ADTELA · | 1 upvotes · 70.7K views
Recommends
on
GolangGolangPythonPython

Either Python or Golang, for all the enlightened reasons already mentionned in all advices/comments :) Enjoy!

See more
fisher boy
Intern web developer at Stepway · | 9 upvotes · 108.7K views
Needs advice
on
CSS 3CSS 3HTML5HTML5
and
JavaScriptJavaScript
in

Hey I'm currently an undergraduate in computer science for almost 5 years now, still left with a few courses before I complete. I know that I'm not good at programming but still I choose developer based programming career approach, I have made plans to start my career in websites, etc, for that, I have purchased books related to HTML5, CSS , JavaScript. I'm currently learning HTML5 and CSS only and after this some JavaScript I am really confident in my decision but would love to know what an expert developer advice thanks in advance.

See more
Replies (7)

Whatever you do don't go WordPress path. Developers over-there tend to ignore system limitations and hardcode and overengineer their solutions so as to please their clients. If you are a beginner probably you'll get to work on someone else's shitty code and will be asked by your boss to do "yet another impossible thing with Wordpress". And... Probably... You'll do it.

My suggestion is: think in stacks and don't start too low. Starting with HTML, CSS3 and JavaScript is too low. Start on higher levels and with something practical. You'll have time for basics some time later and it would be much easier, because you'll see those technologies are compliment to what you do and not your main objective.

My suggestion for you:

  • Android Mobile App Development path (complex enough so you won't get bored)
  • All things web3 crypto, nft, virtual reality, blockchain path (has tons of computing web development tasks)
  • Cloud computing setup and administration path (good, because you say you're not good at programming)
  • Artificial intelligence and automation (this is future, people need this)

I've also found it helpful to think of each stack as a surface (find Google Images "radar chart") . Every time you try to learn something new you start in the center, with all technology-points overlapping. You are as low as you can get and you know nothing. Your job is to expand outwards each technology so as to make a stack-surace. The more surface the better. You'll see that some technological-aspects are easier to expand than others and plan your time accordingly.

Have a good start!

See more

You can also try starting with one of the big marketing agencies. Even if you don't feel like you're ready to start as a web developer (you likely are, though, they hire at all levels) you can start as a content author or similar supporting role until you're more comfortable, then transition into a development role within the same company when you're ready.

See more
Shanover Saiyed
Software Engineer (Web) · | 4 upvotes · 50.8K views
Recommends
on
SvelteSvelteVue.jsVue.js

I would recommend you to learn these quickly and get on learning a good front-end framework like Vue, ReactJs, Svelte. Pick up real world projects not just learn from books. Always keep learning about the new technologies used to develop things because IT Web development tools and their approach is growing faster than ever, you have got to keep up with those new techs and tools. Final advise, open any job portal, find your targeted job and see what requirements are their.

See more
Recommends

I don't believe that you are confident about your decision to follow a career path as a developer. This migh be your department's fault and not necessarily yours. Most good developers are already working as developers at that age. Although your current status states that you are an intern you are struggling to find a good starting point. Since you are interested in website developmnet you can start learning programming using a mainstream CMS such as wordpress. Do you know how many companies and self employed guys make their living by customizing wordpess? But if you want to step out of the crowd then seek for junior jobs on a fintech or on a vertical market such as travel or betting. Search for online job oportunities and find out what technologies these guys use then take an online course and start learning the language. Within a month or two apply for a job as a junior and use as reference the online course.

See more
Jose Vargas
Recommends
on
JavaScriptJavaScript

JavaScript is an ever growing technology with lots of opportunities and great depth for both front end and back end development. I would say that JavaScript is a safe bet in terms of furthering your career as a developer in 2022 and beyond. There’s lots of tools and frameworks based on this language that you would have to make decisions on which ones you want to become an expert. I recommend you follow interesting people that you admire to draw inspiration from. Such as Ben Awad or Jeff Delaney. Check this web page recommended to me by the latter on his YouTube channel “Fireship”: https://2021.stateofjs.com/en-US/resources/

See more
Recommends

JS + HTML + CSS only tackles the front-end of programming. I suggest you can start to learn by finding an open API related to something you love and then creating a website for it. (E.g. movies, documentaries, music, whatever you are into) Also you can do this dude's tutorials https://www.youtube.com/watch?v=dtKciwk_si4

Later on, when you've already one a few projects, start to learn the backend side of things (database + whatever you want - C#, Python...)

See more
Recommends

this article might help you. Web development is a combination of skills. not only developing skills but also SEO and other stuff. codehub.lk/web-development-skills-you-must-have/

See more
Needs advice
on
HTML5HTML5csscss
and
PHPPHP

Hello,

I want to generate dynamic CSS for each user with an expiry link.

I've created a cloud-based tool (Example - https://www.tablesgenerator.com/) where people can create tables and use them on their website by pasting the HTML generated by the tool.

Now, there are a few styling options needed, which can be done using CSS. As of now, I'm asking the users to copy the CSS and paste it in the "Custom CSS" section, which is a bit hectic work as they need to change the CSS every time if I make any changes to the styling.

So, I'm just wondering if there's a way to generate dynamic CSS for each user with an expiry link.

Currently, I have around 200 users, and what's the best way to do it?

See more
Replies (2)
Grant Steuart
Recommends
on
csscss

Instead of having the user copy and paste the CSS directly, have them copy and paste the HTML that will include an external CSS file generated and hosted by your application. This will allow you to control when the stylesheet is updated as well as control privileges on who can request the file. Additionally, using a CDN service (e.g. Cloudflare) will allow you to cache the static assets being requested reducing overall server load.

When your server (and optionally CDN) no longer are serving the file, consider the link expired. Unique URLs can be generated using a multitude of methods but maybe consider if there is any benefit to the users if it follows the scheme: yourdomain.com/USERNAME/CUSTOM_NAME.css rather than something like: yourdomain.com/style/SOME-UNIQUE-HASH-1234.css

See more
Recommends
on
HTML5HTML5csscssPHPPHP

The best way, as usual, is a "it depends".

Still I would go to something as simple as storing the expire date+the generated css and other metadata in a table. If a user tries to access something that is expired than he's redirected to a specific page. Periodically (like once a day), a janitor process deletes the old data.

See more
Decisions about HTML5 and Ruby

A developer and project manager from our team X says the following about our use of Rails at i22:

"We use Rails to build stable and flexible backend systems. Rails is extremely good for managing data structures and quickly setting up new systems. It is the perfect base for most use cases."

I asked the same Team X member why the team prefers to work with Ruby on Rails, rather than Python and Django:

"Because Python is a scripting language and from my point of view not suitable for building stable web services. Python is for me rather good for scripts and fast small tools. Not for stable business applications. And if I want it fast I prefer Go."

See more
  • Client-Side: \ The form of our product is a web app because we would also provide a dashboard for displaying data and for some further purpose including data filtering and comparison. Hence, we would definitely use HTML5 for structuring the web, CSS3 for styling the web, and JavaScript for building the front-end logic. As for frameworks, we would use React because it is component-based that can keep our front-end code clean and organized. The virtual DOM of React also provides better efficiency in time when rendering the page. Furthermore, React has a greater number of users than Vue and Angular, thus have active communities for problem-spotting and problem-solving. We would also incorporate Bootstrap into our web app to provide an aesthetic user interface and thus to improve the user experience. The fact that Boostrap supports responsive site would also ease our workload if future adaptation for mobiles is needed.
See more

Frontend:

  • For our web app frontend, we decided to use TypeScript as our programming language because it supports all functionality of JavaScript and supports optional typing to the language, which can help us take advantage of OOP.
  • We chose ReactJS as our frontend library because its state management would be very handy for our single-page app. React is also component-based, which can help us improve the modularity and extensibility of the project.
  • Aside from the standard web technology HTML/CSS, we will useBootstrap to style UI components and make our web app responsive to different screen sizes.
See more
Ing. Alvaro Rodríguez Scelza
Software Systems Engineer at Ripio · | 12 upvotes · 381.9K views

I was considering focusing on learning RoR and looking for a work that uses those techs.

After some investigation, I decided to stay with C# .NET:

  • It is more requested on job positions (7 to 1 in my personal searches average).

  • It's been around for longer.

  • it has better documentation and community.

  • One of Ruby advantages (its amazing community gems, that allows to quickly build parts of your systems by merely putting together third party components) gets quite complicated to use and maintain in huge applications, where building and reusing your own components may become a better approach.

  • Rail's front end support is starting to waver.

  • C# .NET code is far easier to understand, debug and maintain. Although certainly not easier to learn from scratch.

  • Though Rails has an excellent programming speed, C# tends to get the upper hand in long term projects.

I would avise to stick to rails when building small projects, and switching to C# for more long term ones.

Opinions are welcome!

See more
Timm Stelzer
VP Of Engineering at Flexperto GmbH · | 18 upvotes · 649.7K views

We have a lot of experience in JavaScript, writing our services in NodeJS allows developers to transition to the back end without any friction, without having to learn a new language. There is also the option to write services in TypeScript, which adds an expressive type layer. The semi-shared ecosystem between front and back end is nice as well, though specifically NodeJS libraries sometimes suffer in quality, compared to other major languages.

As for why we didn't pick the other languages, most of it comes down to "personal preference" and historically grown code bases, but let's do some post-hoc deduction:

Go is a practical choice, reasonably easy to learn, but until we find performance issues with our NodeJS stack, there is simply no reason to switch. The benefits of using NodeJS so far outweigh those of picking Go. This might change in the future.

PHP is a language we're still using in big parts of our system, and are still sometimes writing new code in. Modern PHP has fixed some of its issues, and probably has the fastest development cycle time, but it suffers around modelling complex asynchronous tasks, and (on a personal note) lack of support for writing in a functional style.

We don't use Python, Elixir or Ruby, mostly because of personal preference and for historic reasons.

Rust, though I personally love and use it in my projects, would require us to specifically hire for that, as the learning curve is quite steep. Its web ecosystem is OK by now (see https://www.arewewebyet.org/), but in my opinion, it is still no where near that of the other web languages. In other words, we are not willing to pay the price for playing this innovation card.

Haskell, as with Rust, I personally adore, but is simply too esoteric for us. There are problem domains where it shines, ours is not one of them.

See more

A major part of our project includes visualizing the data through graphs and charts. We chose to use d3.js since it provides a wide selection of well-designed graphics and animations. As a library, it is also easy to use and be included in our UI. JavaScript which our team has experience with was also selected to integrate graphics from d3.js into the UI, as well as to integrate the UI with the backend system. Along with JavaScript, HTML5 and CSS 3 are also selected mostly for styling and formatting the webpage. These three languages are widely used which means that more support will be available, making the implementation process easier.

See more
Labib Chowdhury
Student at University of Toronto · | 5 upvotes · 115.3K views

The key to our product relies on explainability and user experience when using our product. With this is mind, it is important to build a clean, readable web interface that a user will be able to navigate easily and quickly debug their security issues. The stack chosen for the interface of our product includes: JavaScript + React, CSS, HTML, Material UI and D3.js.

React provides us with simplicity to allow us to deliver the MVP as soon as possible. React also has multiple open source libraries to ease our development. Being able to reuse React components will help in developing the product fast as well as making the user interface modular. Since we're using React, we will also be using JavaScript, HTML, and CSS to create the frontend.

To design the UI, using a minimal approach would be the best solution. The Material UI library provides us with minimal and aesthetically pleasing React Components which would make our frontend look pleasing to the user.

Finally, our UI will consist of displaying information from our Machine Learning model in a dashboard type view. To display data in tasteful manner, we have chosen to use the D3.js library. This library is the most popular data visualization library for React with over 80k stars on Github. D3 also provides seamless compatibility with React and has a variety of features which would make the data we produce visually pleasing.

See more
Xinyi Liu
Software Developer at BigClarity · | 6 upvotes · 350.1K views

As our team will be building a web application, HTML5 and CSS3 are one of the standardized combinations to implement the structure and the styling of a webpage. Material-UI comes with all sorts of predesigned web components such as buttons and dropdowns that will save us tons of development time. Since it is a component library designed for React, it suits our needs. However, we do acknowledge that predesigned components may sometimes cause pains especially when it comes to custom styling. To make our life even easier, we also adopted Tailwind CSS. It is a CSS framework providing low-level utility classes that will act as building blocks when we create custom designs.

See more
Nathan De Pachtere
Fullstack Developer at Alpsify · | 8 upvotes · 96.8K views
Shared insights
on
CSS 3CSS 3HTML5HTML5JavaScriptJavaScript
at

Am I the only one to think that libraries like Bootstrap, Vuetify, Materialize, Foundation are too much sometimes ?

Most of the time you are loading all the library and using 10% of it. And on that 10% you are modifying 90% of it.

I feel like using grid and pure CSS / JS are enough and cleaner.

See more
Andrew Carpenter
Chief Software Architect at Xelex Digital, LLC · | 16 upvotes · 427.9K views

In 2015 as Xelex Digital was paving a new technology path, moving from ASP.NET web services and web applications, we knew that we wanted to move to a more modular decoupled base of applications centered around REST APIs.

To that end we spent several months studying API design patterns and decided to use our own adaptation of CRUD, specifically a SCRUD pattern that elevates query params to a more central role via the Search action.

Once we nailed down the API design pattern it was time to decide what language(s) our new APIs would be built upon. Our team has always been driven by the right tool for the job rather than what we know best. That said, in balancing practicality we chose to focus on 3 options that our team had deep experience with and knew the pros and cons of.

For us it came down to C#, JavaScript, and Ruby. At the time we owned our infrastructure, racks in cages, that were all loaded with Windows. We were also at a point that we were using that infrastructure to it's fullest and could not afford additional servers running Linux. That's a long way of saying we decided against Ruby as it doesn't play nice on Windows.

That left us with two options. We went a very unconventional route for deciding between the two. We built MVP APIs on both. The interfaces were identical and interchangeable. What we found was easily quantifiable differences.

We were able to iterate on our Node based APIs much more rapidly than we were our C# APIs. For us this was owed to the community coupled with the extremely dynamic nature of JS. There were tradeoffs we considered, latency was (acceptably) higher on requests to our Node APIs. No strong types to protect us from ourselves, but we've rarely found that to be an issue.

As such we decided to commit resources to our Node APIs and push it out as the core brain of our new system. We haven't looked back since. It has consistently met our needs, scaling with us, getting better with time as continually pour into and expand our capabilities.

See more
Manage your open source components, licenses, and vulnerabilities
Learn More
Pros of HTML5
Pros of Ruby
  • 447
    New doctype
  • 389
    Local storage
  • 334
    Canvas
  • 285
    Semantic header and footer
  • 240
    Video element
  • 121
    Geolocation
  • 106
    Form autofocus
  • 100
    Email inputs
  • 85
    Editable content
  • 79
    Application caches
  • 10
    Easy to use
  • 9
    Cleaner Code
  • 5
    Easy
  • 4
    Websockets
  • 4
    Semantical
  • 3
    Better
  • 3
    Audio element
  • 3
    Modern
  • 2
    Portability
  • 2
    Semantic Header and Footer, Geolocation, New Doctype
  • 2
    Content focused
  • 2
    Compatible
  • 1
    Very easy to learning to HTML
  • 607
    Programme friendly
  • 538
    Quick to develop
  • 492
    Great community
  • 469
    Productivity
  • 432
    Simplicity
  • 274
    Open source
  • 235
    Meta-programming
  • 208
    Powerful
  • 157
    Blocks
  • 140
    Powerful one-liners
  • 70
    Flexible
  • 59
    Easy to learn
  • 52
    Easy to start
  • 42
    Maintainability
  • 38
    Lambdas
  • 31
    Procs
  • 21
    Fun to write
  • 19
    Diverse web frameworks
  • 14
    Reads like English
  • 10
    Makes me smarter and happier
  • 9
    Rails
  • 9
    Elegant syntax
  • 8
    Very Dynamic
  • 7
    Matz
  • 6
    Programmer happiness
  • 5
    Object Oriented
  • 4
    Elegant code
  • 4
    Friendly
  • 4
    Generally fun but makes you wanna cry sometimes
  • 4
    Fun and useful
  • 3
    There are so many ways to make it do what you want
  • 3
    Easy packaging and modules
  • 2
    Primitive types can be tampered with

Sign up to add or upvote prosMake informed product decisions

Cons of HTML5
Cons of Ruby
  • 1
    Easy to forget the tags when you're a begginner
  • 1
    Long and winding code
  • 7
    Memory hog
  • 7
    Really slow if you're not really careful
  • 3
    Nested Blocks can make code unreadable
  • 2
    Encouraging imperative programming
  • 1
    No type safety, so it requires copious testing
  • 1
    Ambiguous Syntax, such as function parentheses

Sign up to add or upvote consMake informed product decisions

- No public GitHub repository available -

What is HTML5?

HTML5 is a core technology markup language of the Internet used for structuring and presenting content for the World Wide Web. As of October 2014 this is the final and complete fifth revision of the HTML standard of the World Wide Web Consortium (W3C). The previous version, HTML 4, was standardised in 1997.

What is Ruby?

Ruby is a language of careful balance. Its creator, Yukihiro “Matz” Matsumoto, blended parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) to form a new language that balanced functional programming with imperative programming.

Need advice about which tool to choose?Ask the StackShare community!

What companies use HTML5?
What companies use Ruby?
Manage your open source components, licenses, and vulnerabilities
Learn More

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with HTML5?
What tools integrate with Ruby?

Sign up to get full access to all the tool integrationsMake informed product decisions

Blog Posts

Nov 20 2019 at 3:38AM

OneSignal

PostgreSQLRedisRuby+8
9
4734
Oct 24 2019 at 7:43PM

AppSignal

JavaScriptNode.jsJava+8
5
995
Jun 6 2019 at 5:11PM

AppSignal

RedisRubyKafka+9
15
1707
GitHubDockerReact+17
41
37406
JavaScriptGitHubNode.js+26
20
5029
What are some alternatives to HTML5 and Ruby?
Android SDK
Android provides a rich application framework that allows you to build innovative apps and games for mobile devices in a Java language environment.
JavaScript
JavaScript is most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic,and supports object-oriented, imperative, and functional programming styles.
WordPress
The core software is built by hundreds of community volunteers, and when you’re ready for more there are thousands of plugins and themes available to transform your site into almost anything you can imagine. Over 60 million people have chosen WordPress to power the place on the web they call “home” — we’d love you to join the family.
Java
Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
AngularJS
AngularJS lets you write client-side web applications as if you had a smarter browser. It lets you use good old HTML (or HAML, Jade and friends!) as your template language and lets you extend HTML’s syntax to express your application’s components clearly and succinctly. It automatically synchronizes data from your UI (view) with your JavaScript objects (model) through 2-way data binding.
See all alternatives