teleren/devto huggingface dataset:
DAA: Direct Anonymous Attestation
Tags: security, cryptography
Published: 2022-10-03 16:31:49

This article explains DAA(Direct Anonymous Attestation)[1,2], privacy-friendly platform attestation scheme(e.g. proving CPU manufactual information).


## Background

With the increase of the internet, insecure users' environments may become a risk of leaking the servicers' information on the internet. So the servicer needs to ensure the user environment security.

Remote attestation technologies are proposed for this purpose. Remote attestation is that it proves the users' platform (e.g., providing information on CPU manufactured), so the servicer can limit the platform users use. Remote attestation is implemented with authentication using a vendor certificate and the secret key stored in a tamper-resistance chip. Therefore, it ensures the unforgeability of proof under the assumption that it has never leaked a private key. It is difficult to destroy the assumption because of tamper-resistance chip features.

However, it has issues with user privacy, and it causes the risk that allows the servicer to be enabled to track users. In particular, malicious servicers can collude to track users between multi-service. Because the vendor certificate for attestation is unique for a platform, and servicer can identify the CPU with the certificate.

## DAA: Direct Anonymous Attestation

DAA(Direct Anonymous Attestation), a privacy-conscious signature scheme, is proposed to solve this challenge. DAA ensures unforgeability like normal remote attestation but also prevents tracking and identification. The relation of the number of public and secret keys realizes these features. In DAA, all private keys can be used for signing, but only identical public used for verifying. Thus, the verifier can't track the user because the verifier obtains only signatures and an identical public key for all signers, not a public key unique to the user.

DAA supports the requirements as follows;

**Req A. Unforgeability.**
Anyone can't forge signatures.
So uneligible signer can't generate valid signatures.

**Req B. Anonymity**
Anyone can't find out who generate the signature.
Because it is the use of the same public key for verifying.

**Req C. Unlinkability**
Anyone can't know if multiple signatures are signed by the identical signer.  Because it is the use of the same public key for verifying. 


### Conclusion

This article explains DAA, a technology privacy-enhancing platform attestation. DAA(Direct Anonymous Attestation) is privacy-enhanced signing scheme. It can use to prove manufacture but prevents tracking.

# References

[1] Brickell, Ernie, Jan Camenisch, and Liqun Chen. "Direct anonymous attestation." Proceedings of the 11th ACM conference on Computer and communications security. 2004.
[2] Camenisch, Jan, et al. "FIDO ECDAA Algorithm." (2013).
Websites Every Programmer Should Know
Tags: programming
Published: 2022-10-03 16:13:12

When i was learning Computer Science, there are some useful sites that I came across. Here is a non-exhaustive list of some sites you should visit. This list will get updated as soon as I can get another link, but you can also contribute by adding those you know 😉.

## **When you get stuck**

**1. Codementor :** A mentorship community to learn from fellow 
                developers via live 1:1 help and more.
**2. devRant :** Community where you can rant and release your stress
**3. Google :** A search engine for anything you get stuck with.
**4. Stack Overflow :** subscribe to their weekly newsletter and any other topic which you find interesting.

## 
**Coding practice for beginners**

1. **freeCodeCamp:** Learn to code and build projects for nonprofits. Build your full stack web development portfolio today
2. **Blackbird School:** Learn to code online with our beginner-friendly platform.
3. **Reddit.com/r/dailyprogrammer:** interesting programming challenges where you can learn from looking at other's code, even if you are not able to solve code you can look at how others solved.
4. **InterviewBit | Coding Interview Questions :** Gamifies the experience of practicing for your interview and includes lots of sample problems to solve.
5. **Lod-Cloud:** The Linking Open Data cloud diagram
6. **Pramp:** It's your turn to be the interviewer. when done, click on the swap roles button on the left
7. **treehouse:** The fast, easy, and affordable way to build your skills.
8. **GeeksforGeeks:** Learn to code, Study for placement, Do competitive coding.
9. **edabit:** Practice coding via various small challenges.
10. **Learn Git Branching :** Learn and practice git commands in an interactive way.

## Jobs

1. **AngelList:** AngelList is a website for startups, angel investors, and job-seekers looking to work at startups.
2. **CareerBuilder:** CareerBuilder is one of the largest job boards, providing job listings, resume posting, and career advice and resources to job seekers.
3. **Dice:** Dice is the leading site for tech job seekers. You can search by company, job title, keyword, employment type, and location.
4. **Glassdoor:** Find the job that's right for you. Search all the open positions on the web. Get your own personalized salary estimate.
5. **Indeed:** Find international jobs on Indeed and get a market salary for your dedication and devotion.
6. **SimplyHired:** Simply Hired is a free job search engine (and mobile app) that takes the hassle out of getting hired and provides you with all the information you need to make a sound career move.
7. **Undercover Recruiter:** Become Recruiter, Candidate or Employer. You can get your job easily here.
8. **Who is Hiring:** An awesome resource for searching, filtering, and finding new and attractive jobs according to your needs and interests.
9. **ZipRecruiter:** The Smartest Way to Get Hired.
10. **RemoteML :** Remote Machine Learning jobs.
11. **Linkedin jobs :** A very nice research tool for programming jobs
One Away: Replace, add, remove
Tags: javascript
Published: 2022-10-03 16:10:11

 One Away: There are three types of edits that can be performed on strings: insert a character, remove a character, or replace a character. Given two strings, write a function to check if they are one edit (or zero edits) away.

EXAMPLE
pale, ple -> true 
pales, pale -> true 
pale, bale -> true 
pale, bake -> false

Observe that you don't need to check the strings for insertion, removal, and replacement edits. The lengths
of the strings will indicate which of these you need to check.

```js
const oneWay = (str1, str2) => {
  // check which function
  if (str1.length === str2.length) {
    return oneEditReplace(str1, str2);
  } else if (str1.length + 1 == str2.length) {
    return oneEditinsert(str1, str2);
  } else if (str1.length - 1 == str2.length) {
    return oneEditinsert(str2, str1);
  }
};

const oneEditReplace = (s1, s2) => {
  let foundDifference = false;
  for (let i = 0; i < s1.length; i++) {
    if (s1.charAt(i) != s2.charAt(i)) {
      if (foundDifference) {
        return false;
      }
      foundDifference = true;
    }
  }
  return foundDifference;
};

const oneEditinsert = (s1, s2) => {
  let indexl = 0;
  let index2 = 0;
  while (index2 < s2.length && indexl < s1.length) {
    if (s1.charAt(indexl) != s2.charAt(index2)) {
      if (indexl != index2) {
        return false;
      }
      index2++;
    } else {
      indexl++;
      index2++;
    }
  }
  return true;
};

console.log(oneWay("bal", "bale"));
```
Open Source Lab 4
Published: 2022-10-03 16:09:42

In lab 4 of the open source course, we worked with git remote and added JSON support for our SSG. For the JSON support, we want to be able to write commands and include a JSON file that has a list of commands and our SSG to read and run the command with the list provided.

# What I did

[Issue](https://github.com/liutng/SSGifier/issues/12)

[Pull Request](https://github.com/liutng/SSGifier/pull/13)

For this lab, I worked on Tong's SSG created with CPP. Because I've worked with this code previously it was easily navigatable and most of the code was easy to add. The difficulty I had was adding JSON to CPP. CPP has no native JSON reading so I can't just read the file like a JSON file unless I make a custom class or use a library. A custom class in CPP dedicated to reading JSON would probably be the size of another project so I decided that I want to use an already open source library. I did some research and found a couple of the most used ones and asked Tong if there was one he preferred because at the end of the day it was his code so his decision was the most important one. He said he liked [nlohmann/json](https://github.com/nlohmann/json) because it had the most forks. I looked into how to implement it inside of his code and saw I only needed to include the HPP file inside of the code.

# What was done to my SSG

[Issue](https://github.com/P-DR0ZD/pdrozd-ssg/issues/12)

[Pull Request](https://github.com/P-DR0ZD/pdrozd-ssg/pull/13)

Once Tong implemented JSON inside of my Python SSG I used a git remote to test his repo. I Tested and looked over the code and felt the changes done to mine were done well so I pushed it to my main.
Introducing Mahal.js
Tags: javascript, framework, webdev, typescript
Published: 2022-10-03 16:06:26

---
title: Introducing Mahal.js
published: true
description: Mahal.js is a javascript UI framework similar to reactjs but works without virual DOM similar to Svelte.
tags: javascript,framework,webdevelopment,typescript
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/anv88wl04hm7cey5nunk.png
#cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aqcltlk5jmcrxis9x2sc.png
# Use a ratio of 100:42 for best results.
---

I have been working on an awesome project since last two years and now it is completed and I can't stop myself to share this with everyone. It was a very tough and interesting journey but i am glad i was able to finish it 😃.

The project is named [mahaljs](https://github.com/ujjwalguptaofficial/mahal). It is a javascript UI framework similar to reactjs but works without virual DOM similar to Svelte.

The project has been created from scratch. It has its own template engine, uses event based architecture(to make it feel native to javascript). All of its ecosytem projects like store, router etc has been also created from scratch. 

These are some of awesome features - 

* Works without virtual DOM
* Small in size but powerful - 7kb (minified + gzipped)
* Truly reactive with two way binding
* Better documenting - you can write documentation with yml syntax inside components
* Event based architecture
* Uses modern approach - class based components, decorators etc
* Focuses on simplicity - simple API's and easy to learn

I have also created a documentation site. Here is link - [https://mahaljs.com/docs/get-started/](https://mahaljs.com/docs/get-started/)

The mahaljs is opensource and free to use. The project source code can be viewed on github - [https://github.com/ujjwalguptaofficial/mahal
](https://github.com/ujjwalguptaofficial/mahal)

You might be wondering why i have created mahaljs, since already lots of framework exists. I have written a dedicated article to explain this, since everyone is asking the very same question - [https://medium.com/@ujjwalkrgupta/why-i-created-mahal-js-9141b37fc64](https://medium.com/@ujjwalkrgupta/why-i-created-mahal-js-9141b37fc64)

I will request you to please try once 🙏 and share it with others if you liked it. Also feel free to contribute or create your own projects which can help community. Some of the projects ideas, i can think of are - bootstrap-mahal, materialize-mahal, alert UI, mahal-meta etc. Here is official ecosytem projects link - https://mahaljs.com/docs/ecosystem/

Also i am maintaining a dedicated blog for this projects, so that users can understand even smaller things and take advantage of it. Here is the link in case you want to join - [https://medium.com/mahal-js](https://medium.com/mahal-js)

Thanks for reading it guys.

Let's learn and grow together, join me using below social links -

* Twitter - https://twitter.com/ujjwal_kr_gupta

* Linkedin - https://www.linkedin.com/in/ujjwalkrgupta/

* Github - https://github.com/ujjwalguptaofficial
How to make your subnet public in your VPC ?
Tags: cloud, beginners, aws, ayad
Published: 2022-10-03 16:03:15

1. You need to create and attach an **Internet gateway** to your VPC. This Internet gateway is a managed service, controlled, configured, and maintained by AWS.

2. You need to add a **default route (entry-point)** to the route table associated with your subnet. The route could have a destination value of **0.0.0.0/0**, and the target value will be set as your Internet gateway ID.

3. Any instance that you're required to communicate with external resources on the Internet and beyond, will require **a public IP address**.

4. You'll need to ensure that your public subnet **NACL is not restricting** or blocking expected ingress and egress traffic.


<br>
[GitHub](https://github.com/a00ayad00)
[LinkedIn](https://www.linkedin.com/in/a00ayad00)
[Facebook](https://m.facebook.com/a00ayad00)
[Medium](https://a00ayad00.medium.com/)
Release 0.4.0 of my Perl Dist::Zilla GitHub Action
Tags: perl, githubaction, release, opensource
Published: 2022-10-03 16:02:31

---
title: Release 0.4.0 of my Perl Dist::Zilla GitHub Action
published: true
description: Release 0.4.0 of my experimental Dist::Zilla GitHub Action
tags: perl, githubaction, release, opensource
---
I have just made another release of [github-action-perl-dist-zilla
](https://github.com/jonasbn/github-action-perl-dist-zilla) making version 0.4.0 available in the [GitHub Marketplace](https://github.com/marketplace/actions/github-action-for-perl-s-dist-zilla).

The release is an update of the core component Ebirah the Docker encapsulation of the magnificent Dist::Zilla distribution tool for Perl distributions.

## 0.4.0 2022-10-03 Maintenance release, update recommended

- Bumped [Ebirah](https://github.com/jonasbn/ebirah) requirement from version 0.7.0 to 0.8.0. Which had the core component Dist::Zilla updated from version `6.017` to `6.025`. Please see change log for [Ebirah](https://github.com/jonasbn/ebirah).

REF: [GitHub](https://github.com/jonasbn/github-action-perl-dist-zilla/releases/tag/0.4.0)
Memes only programmer can understand
Tags: memes, programming, programmer, codesguide
Published: 2022-10-03 16:00:05

### When a programmer reviews a code
![When a programmer reviews a code](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8t2eej908ehopytwhie3.png)
### When you remove all the bad code from the app
![When you remove all the bad code from the app](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xahzw7ff45d0b12kc7xc.jpeg)
### Correct way to use comments
![Correct way to use comments](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s3tjkqznvzbicyx80h4x.jpeg)
### Watch the full shorts here
{% embed https://www.youtube.com/shorts/J42pTjus6Lc %}
```
Playwright with Cucumber/JUnit 5 - JUnit 5 test suite and maven clean install
Tags: java, testing, cucumber, junit5
Published: 2022-10-03 16:00:02

## JUnit 5 Test Suite
In previous JUnit versions there was the TestRunner classes to run tests. 

In JUnit5, this is now done through Test Suites. If you followed the other posts in the series and now tried to run the maven command: mvn clean install and find out tests aren't run at all, this might be why. Maven install with the Surefire plug in will look for test classes matching the patterns:
-"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
-"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
-"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
-"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".
 
To include support for JUnit5 Test suites, pom.xml would need the junit-platform-suite dependency:
```xml
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <scope>test</scope>
        </dependency>
```

If you need to support other class names that have to be matched aside from the above, just include them in the Surefire configuration in your pom.xml such as below:

```xml
        <configuration>
          <includes>
            <include>example.java</include>
            <include>**/*IT.java</include>
            <include>**/*EndToEnd.java</include>
          </includes>
        </configuration>
```

In my example I will be creating a test suite named DemoRequestTests. All we have to do is include annotations here:

- @Suite: JUnit5 test suite class
- @SuiteDisplayName("Test Use Cases"): name of the test suite is Test Use Cases
- @IncludeEngines("cucumber"): run this test suite using Cucumber
- @SelectClasspathResource("Features"): where the feature files are located, in this case under test/resources/Features
- @ConfigurationParameter: not used but if your steps are located in a directory that's not automatically picked up by the cucumber engine, then you will want to set the package path to your stepdefinition glue classes.

Now you can run mvn clean install and any test suites you created will run automatically

Code for DemoRequestTests.java
```java
package io.tpan.suites;

import org.junit.platform.suite.api.*;

import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME;

@Suite
@SuiteDisplayName("Test Use Cases")
@IncludeEngines("cucumber")
@SelectClasspathResource("Features")
//@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "steps")
public class DemoRequestTests {
}
```

As always code is on available on [Github](https://github.com/terencenmnpan/TestAutomation/tree/main/PlaywrightCucumberExample)
Invite developers on our Discord and win gifts 🎉
Tags: opensource, microservices, luos
Published: 2022-10-03 15:45:02

Until November 24, invite your friend, colleague or roommate to the Luos discord to become part of the community.

We are convinced that the more the community is known, the more it will help developers in their mission and projects.

We are giving away some gifts has **Discord Nitro** and **special role in our community** based on your invitation confirmed number.

**❓How to get gifts:**

✅ Generate a personal invitation link (that never expire) to our Discord and share it to your friends.

✅ Each week, we will see who brings the most people (this can generate surprises)

🏁 At the end of this contest, we will reward the 5 best sponsors!

If you prefer, Sophie explains the contest in a video:

{% embed https://www.youtube.com/embed/zZGnHZYvc4o %}
In One Minute : MongoDB
Tags: mongodb, beginners, tutorial, oneminute
Published: 2022-10-03 15:18:21

MongoDB is a source-available cross-platform document-oriented database program.

{% embed https://youtu.be/Awd6kzhAeXw %}

Classified as a NoSQL database program, MongoDB uses JSON-like documents with optional schemas. MongoDB is developed by MongoDB Inc. and licensed under the Server Side Public License (SSPL) which is deemed non-free by several distributions.

MongoDB supports field, range query, and regular-expression searches. Fields in a MongoDB document can be indexed with primary and secondary indices or index.

MongoDB provides high availability with replica sets.

MongoDB scales horizontally using sharding.

MongoDB can be used as a file system, called GridFS, with load balancing and data replication features over multiple machines for storing files.

MongoDB provides three ways to perform aggregation: the aggregation pipeline, the map-reduce function, and single-purpose aggregation methods.

MongoDB supports fixed-size collections called capped collections. 

MongoDB claims to support multi-document ACID transactions since the 4.0 release in June 2018.

Official Website :- https://www.mongodb.com/
My Bootcamp Experience
Tags: webdev, programming, beginners
Published: 2022-10-03 15:15:28

For the last 4 months, I have been attending the Flatiron bootcamp in the Software Engineering course. With just one more week to go, I thought I'd write down my experience throughout the course. 

When I first started the bootcamp, I was feeling super nervous and overwhelmed with the amount of information we would be learning in such a short amount of time. There were four phases, each phase was 3 weeks of: 
* learning something new the first week
* taking a coding challenge on this new information the second week
* creating an application using this information for the third week.

The fifth and final phase was creating an application on your own, utilizing all the skills learned throughout the program. 

For someone who only had a little experience in coding, the first couple weeks of learning vanilla JavaScript was the toughest hurdle. There was so much information to understand and implement, easily overwhelming me to reconsider doing this course. But with enough perseverance and help from my peers, I managed to pull through and pass the phase. 

As the phases went on, I started to become more comfortable with the scheduling and structure of the bootcamp and less overwhelmed. Even though we were still learning new skills for each phase, I felt I was getting better at learning new skills in the short amount of time and implementing them into my applications. Each code challenge was starting to become easier and easier as I started to understand the material better.

As I was in my first phase, I remember seeing students' applications for their last phase and could never see myself ever accomplishing what they have. But now that I am in my last phase, I can confidently say that I have proven myself wrong. I have acquired the skills those students learned as they went through this program and hopefully will inspire other students with what I have achieved through my own project. 

But the most important part of the bootcamp is the amazing people I have met that have helped me get through the toughest of times. All of us were going through the same struggles and were always there for one another. I never felt like I was alone and for that I am truly thankful for.

All in all, I am grateful that I considered this bootcamp and never gave up, even though there were times I felt like I couldn't get through it. The skills I have picked up will stick with me for the rest of my life and I couldn't recommend going through this program enough!
What are your plans for this week? Hacktoberfest edition.
Tags: watercooler, goals, hacktoberfest
Published: 2022-10-03 15:11:54

It's Monday, What are your plans for this week? 

Extra questions: Hacktoberfest has begun, are you planning on joining this year? 

Have you done so previously?

- What are your plans for the week?   
- What are you building? 
- What will be a good end result by week's end?
- Are you working on Hacktoberfest?
- Did you meet your goals last week?

**Last Week's Goals**
 How did I do?

- [:white_check_mark:] Prepare for HacktoberFest. I am ready to code. I am also a maintainer on a project this year.
- [:white_check_mark:] Create CSS art. I made B2emo from Andor
- [:white_check_mark:] Blog on any CSS art. [Read it here.](https://dev.to/jarvisscript/css-b2emo-from-andor-53mf)
- [:white_check_mark:] Continue Job search.


**This Week's Goals**

- Continue Job search.
- Get a least one PR accepted for HacktoberFest.
- Attend HacktoberFest kickoff with Virtual Coffee
- Create CSS art.
- Blog on any CSS art.


```
-$JarvisScript git push
```

{% twitter 1576953278969311232 %}
Top 3 programming languages for starters
Tags: beginners, programming, webdev
Published: 2022-10-03 15:11:20

If you want to start #programming but don't know which programming language to choose - feel free to have a look at this video

It describes top 3 programming languages' pros and cons and also explains what kind of career path they will open for you.

#selftaught #programminglanguages

{% embed https://www.youtube.com/watch?v=1X3H7_DnTLo %}