Is the rust compiler racist?1 min read

What are you talking about man? How can a compiler be racist? Well, be ready to be surprised. I am going to prove that the rust compiler is racist and racist particularly against Indians.

Proof

I recently applied for a job as a rust developer and a coding challenge came along with it. I sent my resume along with link of the completed challenge. I was shocked by the response that I got back.

We can’t go ahead with your application. We haven’t looked at the coding challenge that you have completed or other work that you have listed in the resume. The rust compiler won’t compile the code unless the person who wrote the code has a college degree.

I was a bit surprised but realised the truth after going through the compiler code

match coder.country {
    Country::India => match coder.degree {
        Degree::College => {
            continue_compilation();
        }
        _ => {
            reject_compilation();
        }
    },
    _ => continue_compilation()
};

Well there it is. #shameOnRustCompiler

TypeScript: Cannot create an instance of an abstract class2 min read

Let A: abstract Class and B: B extends A. Now try writing a function with return type of (typeof A) and returning (typeof B)

Extending an abstract class

//Type Input
abstract class Input {
constructor() {
}
}
//Input Select
class Select extends Input {
constructor() {
super();
}
}
//Input Text
class TextField extends Input {
constructor() {
super();
}
}
//Create a new element from string name
let getInputType = (type: string): typeof Input => {
switch (type) {
case 'select':
return Select;
break;
default:
return TextField;
}
}
let elemType = getInputType('select');
//Create new elem
let elem = new elemType();

I get the following error

let elemType: new () => Input
Cannot create an instance of an abstract class.

Solution

Store the type of Input in a variable InputClass

type InputClass = typeof Input;

Extend the type with an Interface InputLike

interface InputLike extends InputClass { };

Result

//Type Input
abstract class Input {
constructor() {

}
}

type InputClass = typeof Input;
interface InputLike extends InputClass { };

//Input Select
class Select extends Input {
constructor() {
super();
}
}

//Input Text
class TextField extends Input {
constructor() {
super();
}
}

//Create a new element from string name
let getInputType = (type: string): InputLike => {
switch (type) {
case 'select':
return Select;
break;
default:
return TextField;
}
}

let elemType = getInputType('select');

//Create new elem
let elem = new elemType();

EPSON DOT matrix char code to set page length in inches (Javascript)51 sec read

Set of codes to set page length

Find the list of char codes at http://stanislavs.org/helppc/epson_printer_codes.html

So to set the length of a page in number of lines, use

var num_lines = 72;
String.fromCharCode(27, 67) + String.fromCharCode(num_lines)

Going by the char code list to set the length of the page in inches, we should use

var page_inches = 12;
String.fromCharCode(27, 67, 48) + String.fromCharCode(page_inches);

But it just doesn’t work!!!!!

What happens is the printer thinks you want to set the page length to 48 lines and not 12 inches. Also char code 12 means form feed, so you get one of that too..

I solved it by using

var page_inches = 12;
String.fromCharCode(27, 67, 0) + String.fromCharCode(page_inches);

So you need to add String.fromCharCode(0) and not String.fromCharCode(48) and you will get a page length of 12 inches.