Bytecode Alliance Lays Foundation for Next Gen of Containerized Software

The Bytecode Alliance is now looking to increase developer enthusiasm for WebAssembly (Wasm) and WebAssembly System Interface (WASI) initiatives that promise to transform how software is constructed following its official incorporation as a non-profit entity.

Originally founded by Fastly, Intel, Mozilla, and Microsoft, the Bytecode Alliance also announced today that Arm, DFINITY Foundation, Embark Studios, Google, Shopify, and University of California at San Diego are all now members of an organization dedicated to promoting Wasm standards that should eventually lead to a different approach to containerizing software that provides the added benefit of being more secure than existing architectures.

Wasm is a portable binary instruction format for building software that describes a memory-safe, sandboxed execution environment. That approach might one day replace the current predominant method for building software that relies on the aggregation of software components that tend to lack distinct security boundaries between them. Today it’s relatively easy for malware to infect all the components of an application.

Extending WebAssembly Beyond Browsers and JavaScript

The World Wide Web Consortium (W3C) drove the development of Wasm as part of an effort to create a common format for browsers executing JavaScript code. There is now an effort to extend Wasm beyond browsers and JavaScript to enable developers to ultimately create a set of universal binaries that could work on any platform without modification. As part of that effort, a Wasmer project to create a server-side Wasm runtime has been launched that provides a way to create portable applications based on a secure container architecture that is more efficient than Docker containers. “There’s a lot of work being done on compiler science, said Fastly CTO Tyler McMullen.

That effort comes at a time when the security of software supply chains is getting a lot more attention these days in the wake of some recent high-profile breaches that resulted in malware being embedded in software that was distributed to a wide range of downstream IT organizations.

Unfortunately, Wasm isn’t all that accessible to the average developer. There’s still a lot of work that needs to be done to make it Wasm accessible to the average developer at a higher level of abstraction. However, as more vendors contribute code and resources to Bytecode Alliance, the pace of Wasm innovation should start to accelerate, noted McMullen.

It may be a while before investments in Wasm fundamentally transform how software is constructed. However, developers might want to start thinking of containers as a continuum. They existed long before Docker containers came into vogue. The contribution Docker provided was creating a way to package images in a container format that could be ported across Linux operating systems. The Windows community has since embraced containers as well. The trouble is containers, as they are constructed today, are not portable between Linux and Windows platforms. Wasm, coupled with advances such as Wasmer, may very well eliminate that limitation in a way that provides the added benefit of enabling software to run a lot more securely than it does today.

The post Bytecode Alliance Lays Foundation for Next Gen of Containerized Software appeared first on

Read more:


Philippines ‘buy now, pay later’ startup Plentina raises $2.2M seed round

Plentina co-founders Kevin Gabayan and Earl Valencia

Plentina co-founders Kevin Gabayan and Earl Valencia

E-wallets are rapidly gaining popularity in the Philippines, overtaking credit cards, which have a penetration rate of under 10%. Fintech startup Plentina is leveraging that trend with buy now, pay later (BNPL) installment loans that can be used and repaid through e-wallets.

The company announced today it has closed a $2.2 million seed round, co-led by former Tableau executive and ClearGraph chief executive officer Andrew Vigneault, Unpopular Ventures and DV Collective. Other participants included JG Digital Equity Ventures (JGDEV), Amino Capital, Canaan Partners Scout Fund and Ignite Impact Fund.

Its last funding was $750,000 pre-seed round raised last year from investors including Techstars, Emergent Ventures and the 500 Startups Vietnam Fund. Plentina also participated in the Techstars Western Union and Stanford’s StartX accelerator programs.

Plentina launched in the Philippines in October 2020 and has been downloaded more than 30,000 times. Its merchant partners include 7-Eleven Philippines and Smart Communications, a telecom provider with more than 70 million prepaid subscribers.  The company will use its seed round to onboard more merchant partners in the Philippines before expanding in Southeast Asia and other regions.

As BNPL startups raise, a look at Klarna, Affirm and Afterpay earnings

Plentina uses machine learning models to gauge the creditworthiness of loan applicants, drawing on founders Kevin Gabayan and Earl Valencia’s data science backgrounds. Gabayan was data science lead at Bump Technologies and then spent five years working at Google after it acquired the startup. Valencia’s experience includes serving as managing director of digital transformation at Charles Schwab.

“We’re making BNPL work in emerging markets where few have credit scores and merchants can’t easily integrate technology,” Valencia, Plentina’s chief business officer, told TechCrunch. In addition to alternative credit scoring, the startup also focuses on making installment payment work with merchants’ legacy workflows, he said.

So for, Plentina has generated 10 million credit scores from alternative data sources, including mobile data obtained with user permission and retail loyalty programs, and will continue to develop its models as its merchant partnerships and customer base grows. Customers who build good credit scores with Plentina can increase their credit limits and unlock more offers.

Making sense of Klarna

Loans have a flat 5% service fee, with no interest. 7-Eleven and Smart Communications both offer 14 day loans, and Plentina will introduce more dynamic loan terms in the future, Valencia said. Loans can be used to purchase goods at all of 7-Eleven’s 3000 stores in the Philippines and prepaid mobile airtime with Smart Communications.

Other installment loan services in the Philippines include BillEase, Tendopay and Cashalo. Valencia said Plentina “aim[s] to be a customer’s financial service partner throughout their lifetime. We’re starting by offering closed-loop store credit for essentials purchases for consumers to easily establish their financial identity. As a customer’s financial wellness matures, we can graduate them into additional financial services.”

In a press statement about his investment, Vigneault said, “I’ve worked with many early stage fintech companies over the years. However, I’ve come across few founders who are as impressive as Kevin and Earl and have been able to achieve such levels of success with customers, channel partners, and product at such an early stage.”

Will Carbon and Shahry usher in a wave of buy now, pay later services in Africa?

Read more:

Technology Videos


For copyright matters please contact us at:


1. Audi Digital Matrix Light

2. Lexus Digital Digital Outer Mirrors

3. Mercedes-Benz Remote Parking Pilot

4. ClearMotion

5. Triorep ITBS (Preview)

6. BMW Autonomous Driving

7. BMW Gesture control

8. Valeo Oxy’Zen

9. Hummer EV CrabWalk

10. Valeo Driving Assistance

00:00 – Audi Digital Matrix Light
01:18 – Lexus Digital Outer Mirrors
02:17 – Mercedes-Benz Remote Parking Pilot
03:10 – ClearMotion
03:45 – Triorep ITBS (Preview)
04:45 – BMW Autonomous Driving
05:48 – BMW Gesture control
06:31 – Valeo Oxy’Zen
07:24 – Hummer EV CrabWalk
08:22 – Valeo Driving Assistance

Read more:


Java Multithreading Explained

Multithreading is considered to be one of the more complex topics in computer programming and in Java specifically. To correctly use multithreading in applications requires a high level of skill, knowledge, and experience.

In this article, I introduce multithreading concepts from a developer standpoint and correlate them to Java threading. Developers, software architects and engineers, data scientists, students, and coding professionals – especially the subset using Core Java may use this tutorial to refresh their memory and learn all about the intricacies of multithreading in Java.

Multithreading Concepts in Computer Science

The first thing to understand about multithreading as it relates to Computer Science is what a thread actually is. Threads are a resource-light process that differs from normal processes in a few key ways. The primary features of a thread are:

Threads create a sense of process executions, either concurrently or in parallel.
Threads distribute and execute a single task or similar tasks.
Threads can execute tasks, either on a schedule or asynchronously.
Threads have better context switching mechanisms than processes.
Threads share memory space with other threads and, at the same time, can have their own storage.

Below are some of the core concepts of multithreading from a CS perspective:

Critical Section: This is the section of code that gets accessed by multiple threads at the same time – or concurrently – which can also modify the state. Because of the nature of concurrent modification during the sharing of a resource, access control is necessary.

Semaphores: Semaphores are a resource count; they are used to help control access to a resource that is being shared, particularly in multithreaded environments.

Mutex: Mutex is a construct used for synchronization; it limits one thread to use a given resource at a time. It has ownership associated with it.

Monitor: Another construct use for synchronization. Monitors allow mutual exclusion, as well as the ability to wait for a conditional to be true.

Deadlocks: There are situations where, in the critical section of code, more than one resource is accessed by several threads. In these instances, if a single thread needs access to a resource that is shared, it might need to relieve the currently shared resource. This might also be the case for other threads that are executing concurrently with the same resources. When this mutual exclusion is not possible, it results in a Deadlock.

Deadlock Prevention: The techniques used to prevent deadlock conditions.

Deadlock Handling: The detection of deadlocks and their removal.

Reentrancy: Defines the point where a method – or subroutine – can be entered again without the need to complete its prior invocation.

Java: Multithreading Interfaces and Classes

The following are some core concepts and explanations of multithreading interfaces and classes in Java:

Thread: In Java, the thread class is the most important class related to multithreading. Threads can be implemented by extending this class. Its usage is demonstrated later in this article. In production or in development environments, developers may find it is extremely tough to fix issues related to multithreading. Understanding locks may help solve the most confusing and common errors that even experienced Java programmers have trouble wrapping their heads around.

Runnable: Runnables are an alternative way that you can create a thread. You can either create a thread in Java by implementing a Runnable interface or by extending a thread class. In this case, a developer has to override the run() method from this interface to implement logic. (Note: the Thread Class already implements Runnable). To understand multithreading better, try to remember the lock status on shared objects during each of the methods shown below (where applicable).

start(), Lock Status: It can obtain locks. Call this method when scheduling a thread to run. The thread will run once it is scheduled and a CPU cycle is available.

run(), Lock Status: It can obtain locks; It is called – implicitly – by the Thread runtime in order to start the execution of a thread.

yield(), Lock Status: Locks are held; This particular method either yields or transfers control to a different thread that has an equal priority. The thread it transfers control to – or whether it will eve transfer control – is not guaranteed. The sample code below shows how to create a Thread in Java by extending the thread class.

sleep(), Lock Status: Locks are held; Using this method will cause the current thread being executed to pause its execution for a given amount of time. The amount of time the execution is paused can be specified in milliseconds. An interrupted exception will be thrown, which a programmer will need to address.

join(), Lock Status: Locks are held; Using this will lead to an execution mode, causing all threads to join at the end of the current thread. In this scenario, the current thread continues to completion before it switches to a different thread. This also throws an interrupted exception, which a developer will need to address.

suspend(), Lock Status: Locks are held; This has been deprecated.

resume(), Lock Status: Locks are held; This has been deprecated; Both of these threads have been deprecated as they lead to deadlocks and frozen processes.

stop(), Lock Status: Locks are released; This has been deprecated; This particular thread method has been deprecated because it created irregular states due to damaged objects. It is not recommended for use.

Java Multithreading Tutorial

Java Object Classes and Multithreading

Java’s Object class inherently contains methods used to control access this object, particularly when shared or in multithreaded applications.

wait(), Lock Status: current object lock released, other locks are held; Using the wait() method will cause the current thread to halt execution and go into to a wait state. This will also release the lock it places on the present object, while retaining all other locks on the other objects.

notify(), Lock Status: Lock is acquired by a random waiting thread; The notify() method will notify a thread which is waiting to obtain a lock on the present shared object.

notifyAll(), Lock Status: Lock is acquired by an arbitrary thread that is waiting to obtain a lock on the current shared object. All threads that are waiting to acquire a lock on the thread will be notified using this method.

Java: Understanding Locks in Multithreading

When you think of locks or monitors in Java, the important thing to remember is that concurrent modification performed by threads should never lead to a damaged object. There is one exception to this rule, however: the wait() and notify() parameters that might cause a change to a resource being shared or to an object prior to swapping or switching control. A damaged object is defined as when an undesired or corrupted change in state has occurred.

synchronized: In Java, the synchronized keyword controls access to the critical section of the code. It is also used in the implementation of thread monitors in Java. You can apply the synchronized keyword to static methods and instance level methods, as well as, blocks. Once a thread enters a block or method that is synchronized, it obtains the lock on that object or class. With regards to static synchronized methods, a single lock is held at the class level; it is different than an instance level lock which is held per instance of the class. The synchronized keyword grants mutual exclusion on a shared resource. You may only call wait(), notify(), and notifyAll() in synchronized blocks or methods. Mutexes are not inherently supported in Java.

For an in-depth study on locks, please check out this guide to Java Concurrent Locks.

Asynchronous Task Execution in Java

In the following section, we look at some tools that were introduced in JDK 5 and JDK 6 that provide more controlled access for asynchronous task execution in Java.

Callable: Similar to Runnable, this interface has instances that might b =e executed by another thread.

Executors: Executors are interfaces used for the creation of a thread pool.

ExecutorService: You can use this asynchronous task executor to send Runnable or Callable tasks for execution. You can then track their status through a Future object.
Future: An object return from task submission to an asynchronous task executor from which a task state could be monitored.

AtomicInteger: In Java, this is a type of Integer object that performs concurrent lock-free updates using hardware instructions.

Case Study for Multithreading in Java

In this example code, we will design a multi-threaded system with a shared resource that can take only two values: 0 or 1. It should have two methods – one for incrementing and one for decrementing – that get called by two threads concurrently. One of the threads can only constantly increment, and the other can only constantly decrement. Their operations should be mutually exclusive.

Editor’s Note: You can read more about Multithreading in Java at our multithreading page.

The solution is a simplified version of the “Producer-Consumer Problem”.


public class DevDecrementer implements Runnable {
DevSharedObject devSharedObject;

DevDecrementer(DevSharedObject devSharedObject) {

public void run() {
while(true) devSharedObject.decrementerAccess();


public class DevIncrementer implements Runnable {

DevSharedObject devSharedObject;

DevIncrementer(DevSharedObject devSharedObject) {

public void run() {
while(true) devSharedObject.incrementerAccess();

public class DevWorkbench extends Thread {

public static void main(String[] args) {

DevSharedObject devShared=new DevSharedObject();

Thread devThread01=new Thread(new DevIncrementer(devShared));

Thread devThread02=new Thread(new DevDecrementer(devShared));

public class DevSharedObject {

// access from within this class only
private int x;

public synchronized void decrementerAccess() {
try {
if (x == 1) {
} else {
} catch (InterruptedException e) {
System.out.println(“thread interrupted”);

public synchronized void incrementerAccess() {
try {
if (x == 0) {
} else {
} catch (InterruptedException e) {
System.out.println(“thread interrupted”);

Practice Java Coding Riddle for the Reader

Most of the classes below were introduced in JDK 7. They provide an alternate and, in some ways, easier way of programming multithreaded applications in Java.

Condition: Condition is used to factor out Object monitor methods such as wait(), notify(), and notifyAll() into separate, distinct objects in order to give the effect of having multiple wait-sets per object. This is achieved by combining them with the use of arbitrary lock implementations. Whereas a lock replaces the use of synchronized methods and statements, a Condition replaces the use of the Object monitor methods. Condition is a Java interface.

signal(): Wakes up one waiting thread.

signalAll(): Wakes up all waiting threads.

await(): This will cause the current thread to wait until it is either signaled or interrupted. Implementing lock provides more robust locking operations than you can obtain with synchronized methods and statements. Lock is an interface.

ReentrantLock: A re-entrant mutual exclusion lock with the same basic behavior as an implicit monitor lock. It is a concrete implementation of Lock.

Your task: design an asynchronous task executor modeled as a thread pool executor.
Hint for Solution: It is a simplified version of the “Producer-Consumer Problem”.

Happy Multithreading in Java!

Sumith Puri is a Principal Java/Java EE Architect, a Hard-Core Java // Jakarta EE Developer with 16 (and counting) years of experience. He’s a Senior Member of ACM and IEEE, DZone Core, Member, CSI*; DZone MVB, and Java Code Geek. He holds a Bachelor of Engineering (Information Science & Engineering) from Sri Revana Siddeshwara Institute of Technology, completed the Executive Program in Data Mining & Analytics at the Indian Institute of Technology, and the Executive Certificate Program in Entrepreneurship at the Indian Institute of Management. His experience includes SCJP 1.4, SCJP 5.0, SCBCD 1.3, SCBCD 5.0, BB Spring 2.x*, BB Hibernate 3.x*, BB Java EE 6.x*, Quest C, Quest C++ and Quest Data Structures.

The post Java Multithreading Explained appeared first on

Read more:


Building customer-first relationships in a privacy-first world is critical

Travis Clinger

Share on Twitter

Travis Clinger is SVP, head of addressability and ecosystem at LiveRamp, a data connectivity platform safely moving data through the pipes connecting most every brand, tech platform, publisher and advertiser on the open internet.

Jeff Nienaber

Jeff Nienaber is senior director, global audience ads at Microsoft Advertising, which provides intelligent solutions that empower advertisers to deliver engaging, personalized experiences to over half a billion people worldwide.

In business today, many believe that consumer privacy and business results are mutually exclusive — to excel in one area is to lack in the other. Consumer privacy is seen by many in the technology industry as an area to be managed.

But the truth is, the companies who champion privacy will be better positioned to win in all areas. This is especially true as the digital industry continues to undergo tectonic shifts in privacy — both in government regulation and browser updates.

By the end of 2022, all major browsers will have phased out third-party cookies — the tracking codes placed on a visitor’s computer generated by another website other than your own. Additionally, mobile device makers are limiting identifiers allowed on their devices and applications. Across industry verticals, the global enterprise ecosystem now faces a critical moment in which digital advertising will be forever changed.

Up until now, consumers have enjoyed a mostly free internet experience, but as publishers adjust to a cookieless world, they could see more paywalls and less free content.

They may also see a decrease in the creation of new free apps, mobile gaming and other ad-supported content unless businesses find new ways to authenticate users and maintain a value exchange of free content for personalized advertising.

The truth is, the companies who champion privacy will be better positioned to win in all areas.

When consumers authenticate themselves to brands and sites, they create revenue streams for publishers as well as the opportunity to receive discounts, first-looks and other specially tailored experiences from brands.

To protect consumer data, companies need to architect internal systems around data custodianship versus acting from a sense of data entitlement. While this is a challenging and massive ongoing evolution, the benefits of starting now are enormous.

Putting privacy front and center creates a sustainable digital ecosystem that enables better advertising and drives business results. There are four steps to consider when building for tomorrow’s privacy-centric world:

Transparency is key

As we collectively look to redesign how companies interact with and think about consumers, we should first recognize that putting people first means putting transparency first. When people trust a brand or publishers’ intentions, they are more willing to share their data and identity.

This process, where consumers authenticate themselves — or actively share their phone number, email or other form of identity — in exchange for free content or another form of value, allows brands and publishers to get closer to them.

Read more:

Technology Videos


For copyright matters please contact us at:

Mind Warehouse ►

1. Timekettle WT2

2. Catapult PLAYR

3. YOSH Smart Fan

4. Bose Frames

5. Bumruk

6. Pero

7. MaskFone

8. Handy Gym

9. August Wi-Fi Smart Lock

10. Multifunctional cleaning slime (Preview)

11. Pokit PRO

12. Verdeat

13. Hoomall Fish Skin

14. Ember Mug

15. RYOBI 18V ONE+ Floating Speaker

16. WaxOn

02:52 – BUMRUK
03:26 – PERO
04:05 – MASKFONE
04:33 – HANDY GYM
06:27 – POKIT PRO
07:04 – VERDEAT
07:38 – HOOMALL FISH SKIN (preview)
08:01 – EMBER MUG
09:14 – WAXON

Read more:

Technology Videos


For copyright matters please contact us at:


1. Polaris Slingshot police

2. Gibbs Quadski Patrol

3. Mission Master UGV live

4. Ejder Toma

5. Polaris DAGOR A1

6. Shinjeong S-5 “Barracuda” live

7. Madfox

8. Ovum (Preview)

9. ST Engineering Bronco

10. Bell V-280 Valor

00:00 – Polaris Slingshot police
01:20 – Gibbs Quadski Patrol
02:25 – Mission Master UGV
03:38 – Ejder Toma
04:48 – Polaris DAGOR A1
05:58 – Shinjeong S-5 “Barracuda”
06:56 – Madfox
07:49 – Ovum (Preview)
08:35 – ST Engineering Bronco
09:30 – Bell V-280 Valor

Read more:


Knowing when your startup should go all-in on business development

Mike Ghaffary

Share on Twitter

Mike Ghaffary is a general partner at Canvas Ventures, where he invests in innovation for consumers and software. Previously, he was a partner at Social Capital, co-founder and VP of Business Development of Stitcher, VP of Business and Corporate Development at Yelp, and Director of Business Development at TrialPay.

There’s a persistent fallacy swirling around that any startup growing pain or scaling problem can be solved with business development. That’s frankly not true.

Business development is rarely, if ever, the solution to succeeding in a crowded industry, differentiating an offering or delivering a truly exceptional customer experience. But standing up an effective BD operation that brings in sustainable revenue and helps validate product-market fit can be the difference between survival and failure for a startup.

Business development is rarely, if ever, the solution to succeeding in a crowded industry, differentiating an offering or delivering a truly exceptional customer experience.

I’ve had the opportunity to lead business development functions at three companies experiencing three very different stages of growth: Yelp, Stitcher and TrialPay.

At Yelp, I served as vice president of business development and corporate development for seven years. The business development team I was brought in to lead was a core business unit with accountability to the COO, CEO and board. During my tenure, I was involved in securing around 200 partnerships with companies like Apple, Amazon, Microsoft and Samsung, as well as with scores of organizations ranging from early-stage startups to corporate giants.

Yelp was on its way to becoming a go-to source of information and customer value before I arrived. But partnerships like the one I secured with Apple made Yelp into a global market leader.

At Stitcher, I took on business development as central to my role as a company founder. While it may seem like an early phase to go all-in on BD, the partnerships with music and media companies that I orchestrated in the earliest days were essential to the company’s very survival. Stitcher is an example of a company where early BD investment made sense because of the dual importance of brand name involvement in concept validation and rising above podcast market congestion.

At TrialPay, an e-commerce platform acquired by Visa in 2015, there was already an established founding team and business model to involve customers in the marketing and payment of offerings by the time I showed up. In fact, I was brought in to run business development because the company was approaching an inflection point: There was pressure internally from investors and externally from customers to expand TrialPay’s network of merchants in order to diversify commercial offerings more rapidly.

The need for business development was directly tied to consumer demand and the company’s own position between growth funding rounds.

When to go all-in on BD — and when to avoid it

There are certain market conditions that make it smart for companies to invest in BD as a growth engine and others that signal it’s best to place money, talent and time elsewhere.

You should invest in business development early when your startup’s early success depends on it. For example, at Stitcher, we wanted — and perhaps needed — early buy-in from large media companies who created the podcast content we were going to feature. We didn’t want to get in the same murky legal territory early music startups had gotten into, like Napster.

Read more:


Best Programming Languages to Learn in 2021 for Web Development

Best languages to learn in 2021 for Web Development

It might be a little redundant to specify that this article features languages employed in Web development since a lot of programming happens on that front these days. Nonetheless, if you’re looking to discover the latest and greatest way to build self-learning AI robots, you may or may not find it here. (Take a look at Go below.)

You don’t need to learn all of the programming languages presented here today; give them a try and decide which to add to your arsenal based on your requirements, aptitudes, and personal preferences.

Top Programming Languages at a Glance

Before we dive in, let’s get the lay of the land. Here were the top ten languages for 2020, according to a Gitpod poll:

Best Web Development Languages for Programmers 2021


These may change as 2021 unfolds, but that’s what we’re going by here today.


Back when I was a junior developer, I can vividly recall consultants scoffing at JavaScript, stating that it wasn’t a “real” language and would soon be replaced by something better. Fast forward to the present day, and JavaScript is the most popular language for web development in the world! Since its inauspicious start as a means of providing interactivity to Netscape’s Mosaic web browser back in 1993, JavaScript is now utilized in both the front and back end (Nodejs) of web applications as well as in mobile applications (React Native).

JavaScript’s unrivaled success is due to a number of factors:

Its forgiving and flexible syntax
It works across all major browsers
It is one of the friendliest programming languages for beginners


Although Python has been around since the early nineties, I have somehow never gotten around to using it myself. According to those who have experience with Python, it’s one of the most versatile programming languages around. In addition to web development, Python is well suited to Data Science, Scripting, and Automation applications as well. Similar to JavaScript, Python is considered to be an excellent language to learn coding, especially if you are new to software development.

Thanks to its massive popularity, Python enjoys huge community support and has a lot of useful frameworks, libraries, and tools that can help you create a web application quickly. For example, you can use Django to create full-stack web applications. If you want something even more “Pythonic” you can also use Flask, which touts itself as a minimalist web development framework.


Now TypeScript is a language that I do know, mostly due to my experience with Angular. Some people refer to it as JavaScript++ because it is an extension of JavaScript that enforces type-safety. The idea is that it helps catch potential bugs during compilation, which IDEs like VS Code do in the background while you code.

TypeScript Compile Error


TypeScript 2.0 added the –strictNullChecks switch so that null and undefined values may only be assigned to variables that have been declared to accept them as values. In actual code, that would look like this:

let nullableVar: string | null;

The compiler also forces you to initialize variables at creation time or within the constructor. While such strict checks can be annoying while coding, they sure do help reduce the number of runtime bugs!


Yukihiro “Matz” Matsumoto created Ruby by blending parts of his favorite languages (Perl, Smalltalk, Eiffel, Ada, and Lisp) to form a new language that combined elements of functional and imperative programming. In his own words, Matsumoto was “trying to make Ruby natural, not simple,” in a way that mirrors life. Since he first released Ruby in 1995, it has grown to become one of the most popular and beloved languages for web development.

Beginners are drawn to Ruby because it has achieved a reputation for having one of the friendliest and most helpful user communities. Add to that a straightforward syntax, the amazing Ruby on Rails web application framework, and association to great tech businesses, including Twitter, Airbnb, Bloomberg, and Shopify, and it becomes abundantly clear why Ruby has become so ubiquitous.


Known as the little language that could, Go is really a low-level language that more closely resembles C and C++ than JavaScript or Ruby, without the difficult syntax and steep learning curve. Designed to run at blazing-fast speeds, it’s ideally suited to building web servers, data pipelines, and even machine-learning packages.

To act as a web server, Go relies on the net/HTTP package. Here’s the code to tells the HTTP package to handle all requests to the web root (“/”) with handler:

// +build ignore

package main

import (

func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, “Hi there, I love %s!”, r.URL.Path[1:])

func main() {
http.HandleFunc(“/”, handler)
log.Fatal(http.ListenAndServe(“:8080”, nil))


Of course, we can’t talk about web development without including HTML and CSS. Though not programming languages per se, they remain the backbone for web development and, as such, remain at the forefront of that field. Both have grown tremendously since the early days of the World Wide Web. HTML5 and CSS3 have both greatly contributed to the responsivity of the modern Web – especially when combined with JavaScript!

If you want to get in on front-end development in 2021, then you must master HTML5 and CSS3. The good news is that you can easily do that in a few weeks as they are relatively easy to learn.


And there you have it, the best languages to learn for web development in 2021! When evaluating popular languages, try not to get caught up in trends and fads. Go with those that have been around for a little while and have enjoyed a steady rise to the top of the heap. The last thing you want is to find yourself with a bunch of applications using a defunct language.


Rob Gravelle resides in Ottawa, Canada, and has been an IT guru for over 20 years. In that time, Rob has built systems for intelligence-related organizations such as Canada Border Services and various commercial businesses. In his spare time, Rob has become an accomplished music artist with several CDs and digital releases to his credit.

The post Best Programming Languages to Learn in 2021 for Web Development appeared first on

Read more:


Sarah Kunst will outline how to get ready to fundraise at Early Stage

Sarah Kunst, founding partner at Cleo Capital, has worn many hats. She’s been an entrepreneur, served on plenty of boards, is a contributing author at Marie Clare, has been a senior advisor to Bumble and worked as a consultant in marketing, business development and more.

With all that experience, she knows all too well that the process of fundraising starts well before your first pitch meeting. That’s why we’re so excited to have Kunst join us at Early Stage in July to discuss how to get ready to fundraise.

This isn’t the first time Kunst has discussed the topic with us. On a recent episode of Extra Crunch Live, Kunst and one of her portfolio company founders Julia Collins described how to conduct the process of fundraising.

Julia Collins and Sarah Kunst outline how to build a fundraising process

For example, there is a story to tell, metrics to share and an art to building momentum before you ever start filling your calendar. That all requires preparation, and Kunst will outline how to go about that at our event in July.

Early Stage is going down twice this year, with our first event taking place tomorrow! Here’s a look at some of the topics we’ll be covering:


Bootstrapping Best Practices (Tope Awotona and Blake Bartlett, Calendly)
Four Things to Think About Before Raising a Series A (Bucky Moore, Kleiner Perkins)
How to Get An Investor’s Attention (Marlon Nichols, MaC Venture Capital)
How to Nail Your Virtual Pitch Meeting (Melissa Bradley, Ureeka)
How Founders Can Think Like a VC (Lisa Wu, Norwest Venture Partners)
The All-22 View, or Never Losing Perspective (Eghosa Omoigui, EchoVC Partners)


Finance for Founders (Alexa von Tobel, Inspired Capital)
Building and Leading a Sales Team (Ryan Azus, Zoom CRO)
10 Things NOT to Do When Starting a Company (Leah Solivan, Fuel Capital)
Leadership Culture and Good Governance (David Easton, Generation Investment Management)

The cool thing about Early Stage is that it’s heavy on audience Q&A, ensuring that everyone gets the chance to ask their own specific questions. Oh, and ticket holders get free access to Extra Crunch.

Interested? You can buy a ticket here.

Read more: