teleren/devto huggingface dataset:
📱 Two Faces of Google 🌗  Crackdown of CamScanner,UC and Cheetah 🚫
Tags: discuss, android
Published: 2019-09-06 17:48:41

Recently, CamScanner has been discovered with an adware by Kaspersky, and it has been removed from the play store by google, but the company blamed it on their ads partner and now the app is back in store!!
This is not the first time a popular app is getting penalised by google.

On November 2017,
>UC Browser has disappeared from the Google Play store. The Alibaba-owned mobile browser, which garnered more than 500 million downloads last month and has over 100 million users in India, is no longer visible on search - though other UCWeb applications - UC Browser Mini and UC News - still are. The development emerges months after the Chinese app had been accused of sending personal data of its Indian users to a server in China, and it's unclear for now what the reason for the removal is.

On December 2018
>If you were, for some reason, hoping to download CM File Manager or Kika Keyboard, I have some bad news. A report last week claimed that Cheetah Mobile and an associated company called Kika Tech were engaged in some shady advertising practices, and now Google has responded. These two apps have been suspended from the Play Store, and Google may still take further action.
App analytics firm Kochava claimed last week that Cheetah Mobile and Kika both engaged in so-called "click fraud" by claiming credit for app installs even when they didn't show an ad. Cheetah Mobile blamed a third-party SDK for the issue, but Kochava says Cheetah develops the offending SDK. Google initiated an investigation following the report and has removed CM File Manager (cache) and Kika Keyboard (cache). Cheetah Mobile's file manager had more than 50 million downloads, and the keyboard was north of 100 million. Cheetah Mobile also voluntarily removed its Battery Doctor and CM Locker apps from the Play Store following the initial report.


.....and guess what???

All these apps owned by big companies have successfully made its way back to the app store.

Now coming to the other side,

Normal Publishers has to write a blog and if its gets enough coverage, it will get noticed by the team and they will restore it (if it doesn't violate any policies).

Google has terminated my activities and Google Play Developer Account
https://medium.com/@julianinho/google-has-terminated-my-activities-and-google-play-developer-account-7a89e6699f07


Google just deleted my nearly 10-year-old free & open-source Android app
https://medium.com/@mmathieum/google-just-deleted-my-nearly-10-year-old-free-open-source-android-app-7fbc52edc50a


These are some of the instances where indie developers accounts were banned for little/no reasons, and the biggies who got multiple strikes are having their accounts live. According to google, 2-3 strikes is all that needed to ban an account , still these big apps survives.


Recently,Youtube has also been accused of favouring celebrity channels and bend their rules for them, and google denied it

Share your thoughts!!
ASP.NET Identity
Tags: aspnetidentity, identity, membership, equationofsoftwaredesign
Published: 2019-09-06 17:48:31

I don't know whether it's just a coincidence that I've been tasked with **ASP.NET Identity / Membership** during my total career, or it's something in my personality that makes me a suitable candidate for implementing such features. I remember from adding **ASP.NET WebForm Membership** to old school web projects to recent strugglings with **ASP.NET Core Identity**.

Fortunately, the core concept has not changed a lot. Both implementations across different versions share similar database tables, even *ASPNET_Users* table is similar. *SignInManager*, *ApplicationUserManager* and similar classes expose similar APIs in the same way. During the years, *user claims* has played a more profound role and, the only significant change is the emerging of *JWT*.

To my pleasure, [SO questions](https://stackoverflow.com/questions/tagged/asp.net-identity) on the matter have been attractive for me. I'm always glad to try on those type of questions.

Last night, after reading some parts of book *[code simplicity](https://www.amazon.com/Code-Simplicity-Fundamentals-Max-Kanat-Alexander/dp/1449313892)*,  I was trying to calculate how many users have been registered or authenticated through the code I've installed on the project or customized for business purposes. In fact, registration frequency is not very high, as most of my works has been used in businesses rather than being online services. I have an applications in my resume with 700K users, although most of these number of users has been imported via database operations. In another project, about 200 users exists in the database. This system is alive for about 8 years. In each business day, about 200 login/logout happens. Totally, 50K login/logout each year. Finally, 400K login/logout so far which looks like a big number. In another project which is installed for several customers, 10 active users exists per customer. I guess 5 logins happen per day while there are 30 customers roughly. Consequently, 39K logins happens per year per total customers. It is expected that this reaches one million in a 25 years period. However, as *Refresh Token* has been employed in the 3rd project, the number goes even higher.

For more information about **the equation of software design** read the book or see [this entry](https://www.codesimplicity.com/post/the-equation-of-software-design/).
In-Memory Performance for Big Data
Tags: discuss, java, database, kotlin
Published: 2019-09-06 17:07:23

This paper is really interesting -- pointer swizzling for traditional database systems with a Buffer Manager to compete with in-memory databases for smaller data sets:

http://www.vldb.org/pvldb/vol8/p37-graefe.pdf

Seems I "accidentally" implemented a similar mechanism for https://sirix.org as I'm setting in-memory page references on a cache miss and explicitly set them to null, once the Buffer Manager has to evict entries :-) However as I'm using object instances as keys I can simply set the reference to null instead of using another Cache for a child to parent mapping. I'll see if I can simply cache the Java hashCode values in an instance field to further improve performance a bit.

Have a great weekend :-)

Kind regards
Johannes
Generate digital identity with Python
Tags: python, blockchain
Published: 2019-09-06 17:02:33

You can generate a digital identity, as commonly seen in blockchain technology or ssh. This is for the <a href="https://pythonprogramminglanguage.com">Python</a> language. 

Like in blockchain technology, the "username" will be the public key. The code below generates a public and private key.

<img src="https://proxy.duckduckgo.com/iu/?u=http%3A%2F%2Fladyjaderains.files.wordpress.com%2F2012%2F06%2Fkeys.gif%3Fw%3D584&f=1&nofb=1" alt="keys">

## Key generation

We'll import the module Crypto and use the RSA algorithm. (RSA is not recommended, but this is an example). 

    #!/usr/bin/python3
    from os import chmod                                                            
    from Crypto.PublicKey import RSA                                                
                                      
Then we use that algorithm to generate a public private key pair:
                                          
    key = RSA.generate(2048)                                                        
    pubkey = key.publickey()                                                        
                                                      
Finally you can output them. In practice you never output your private key. When was the last time you output your passwords to the terminal?
                          
    print(key.exportKey('PEM'))                                                     
    print(pubkey.exportKey('OpenSSH'))      

In key.exportKey('PEM'), the parameter is the output format. You can choose these formats:

* 'DER' - binary encoding
* 'PEM' - texture encoding
* 'OpenSSH' - texture encoding according to OpenSSH spec. 

Run the program, you now have a digital identity. You can share you public key with anyone.

Related links:
* <a href="https://pythonprogramminglanguage.com">Learn Python</a>
* <a href="https://pythonhosted.org/pycrypto/Crypto-module.html">Crypto module</a>
Idea: have the dev.to platform available for use elsewhere.
Tags: discuss
Published: 2019-09-06 16:49:19

the dev.to platform is incredible, it creates a Twitter like atmosphere that's way more sophisticated and generally has more moderation, so there's more people who know what they're talking about, it's easier to find help, and it's more in-depth than a subreddit. Idk why I'm selling you on the platform you're currently using, but here we are.

What if the platform was available for other careers/hobbies/etc. 

So, for instance, let's say it's writing/authors/etc. I don't know what the domain name would be, but for now, write.to (actually...). It uses the dev.to framework, but it's clearly for writers, authors, poets, novelists, etc. They can have various sections/tags to follow, and it can allow for people high up in the field to give advice to those not as high, to allow for good discussion across the board, etc. 

Essentially, like how stack overflow now has various branch offs because the system worked well. 

Kind of putting it out there for dev.to staff, I figure that the logistical hurdles are probably great, as well as the fact that it is YOURS, and thus, how would it be to have another team using it for a different purpose. But, if the code base is on a paid level, it could work. 

Essentially, this platform makes it so that people can have "blogs" on a given subject without having 60000 blog pages all geared to the same subject. There's something incredibly powerful about that possibility.
Whats a subreddit/slack/substack that you rely on?
Tags: discuss, meta, community
Published: 2019-09-06 16:38:15

---
title: Whats a subreddit/slack/substack that you rely on?
published: true
description: quick Friday discussion
tags: discussion, meta, community
---

Twitter communities can be amorphous and the community at an office can be great until you switch jobs, what's a community that you rely on to give you answers, support or encouragement?

subreddits (I really love the community on [r/unity3d](https://www.reddit.com/r/Unity3D/))

substacks (I spent a while replying to tons of stuff on Stack Overflow but I know some people are in to particular substacks

Slacks?

Let me know in the comments
How to act properly to scroll to bottom behavior using RxJS
Tags: angular, javascript, rxjs, typescript
Published: 2019-09-06 15:53:04

Hi, I'm Amr Taher, a cross-platform software engineer who loves coding in Javascript and greatly appreciates clean modular techniques to make your application maintainable and scalable.

Ever wondered on how would you act when the user scrolls to the bottom in an Angular application ? for example if you have like 3 Components that triggers some action whenever the user scrolls to the bottom (getting more data or changing some styling), how would you do that?


rxjs provides a very powerful toolkit that you could use in order to achieve a clean approach to such a problem.

First, let us listen to the user's scroll behaviour and check if he is at the bottom in the AppComponent.ts

```js
    window.onscroll = () => {
      const d = document.documentElement;
      const offset = d.scrollTop + window.innerHeight;
      const height = d.offsetHeight;
      if (offset === height) {
        // do some action here.
      }
    };
```

Now whenever the user is at the bottom the condition above will be triggered.
We can use rxjs powerful tools to use this event to share such scroll behaviour in the desired components.

In A service lets say a ThemingService
```js
public isAtBottom$ = new BehaviourSubject<Boolean>(false);
```

Here we defined a behaviour subject that we can listen to in any of the components through subscribing to it!

```js
if (offset === height) {
this.theming.isAtBottom$.next(true);
}
```
now we trigger the behaviour subject to true whenever we reach the bottom.

In any components, we can simply subscribe to the behaviour subject to trigger the desired events we want whenever we are at the bottom.

ComponentA
```js
this.theming.isAtBottom$.subscribe(res => {
if (res) {
// do something
});
```

And that is it! I hope you guys like the idea, you can pretty much do this in any component now while only listening to the scroll event in one section (AppComponent.ts)
bits-ui.com : Simple and elegant UI Library
Tags: javascript, css
Published: 2019-09-06 16:24:34

Would like to share Web Components and CSS Library for building website.
[bits-ui.com](https://bits-ui.com)
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/qdx1zf72c3gpx0spnl1u.png)
How to get selected in Google Summer of Code?
Tags: gsoc, opensource
Published: 2019-09-06 16:07:17

I want this to be as concise as possible yet comprehensive so you can work on yourself and your skills to get selected in the next Google Summer of Code. Here are a set of questions that you should ask yourself first and these questions are in a particular order of priority.
1.What am I interested in ?
2.What kind of skill sets do I have now ?
Basically, the first priority should be given to your interests. I was interested in machine learning and hence I went ahead with selecting ML projects. You should look at the previous years organizations and the kind of projects that they had put up in the ideas list. This will give you a general idea about the kind of projects that you might get to see this year. Now to the second question, if you do not have much time to acquire the skills required for a project, you should select such a project which you can contribute to using your current skill set.
Once you have selected the organization based on the interest, you should start contributing to that organization in whatever way you can. A few examples would be solving small problems in things such as installation from source or any issues listed as good first issue and opening a PR. As soon as the organizations are announced, you should contact the mentors listed under the project, and start researching about the projects. A good advice here would be to select **only one project**. Develop a **good interaction** with the mentor by explaining your ideas or suggestions if you have any. The next step is the project proposal period where you are supposed to draft a proposal and submit it. In this proposal, you should design a schedule of the Milestones to be achieved and things that you plan to do and this should be as **detailed** as possible and it should be realistic. Do give some time for a **buffer period** to ensure you achieve the **milestones** you set. Try to perfect the draft proposal itself and share it soon enough to get your mentor`s feedback on it. According to the feedback, try to improve on the proposal. Usually, when you contact the mentors, they will list out a few tasks to be done, try to show as much **initiative** as you can while doing these tasks by over performing. Do mention these things in the proposal and **show code** that was used in the proposal. If possible try to **create a small prototype** of the project which will really help the mentor to believe that you can complete the project with his guidance. These are some of the most important things that should be adopted to get selected in Google Summer of Code. [Here](https://summerofcode.withgoogle.com/projects/#6234257968594944) is the link of the work I did in Google Summer of Code 2019.
What are some must attend conferences/talks/events for a backend developer?
Tags: discuss, askdev
Published: 2019-09-06 16:02:20

---
title: What are some must attend conferences/talks/events for a backend developer?
published: true
description: 
tags: #discuss , #askdev
---

Hi, so as the title says, what are those events or conferences that one must attend if they are interested in backend development ? I have been working on backend technologies like - Spring Boot (Java) and NodeJs/Express (JS) for couple of years now and I would like to know about these events where you get to learn/hear more about advanced topics like - Message Queue based distributed systems, Real-time event based systems etc.
CYOMS - Craft Your Own Minecraft Server
Tags: minecraft, javascript, server, gaming
Published: 2019-09-06 15:52:39




<!-- Cyoms Cover Pic -->
# [CYOMS - Craft Your Own Minecraft Server](https://github.com/Pika1998/CYOMS/releases/tag/v1.0.0)


Download CYOMS v1.0.0 :
https://github.com/Pika1998/CYOMS/releases/tag/v1.0.0

**CYOMS** (Craft Your Own Minecraft Server) is a desktop application which allows users to setup a minecraft server of any version easily.

---

## Preview 

CYOMS allows creation of **Vanilla** servers and will soon support **Craft-bukkit** and **Spigot** servers.

![Preview 1](https://thepracticaldev.s3.amazonaws.com/i/c8q2pxst6he0lfj11szb.png)


CYOMS allows configuration of basic server settings, by default it crafts the latest version of server on local IP address.

![Preview 2](https://thepracticaldev.s3.amazonaws.com/i/vi7elzaxz9czeyc90dkk.png)
---
## Installation

 1. Install using **CYOMS_setup.exe** file
 1. The installer will guide you upon the installation steps which are as follows:
    * Select the folder where you would like to install CYOMS
    ![Installation Step 1](https://thepracticaldev.s3.amazonaws.com/i/i3xc2vjsrni2jkkcyavs.png)
    * Tick *'Create a desktop icon'* if you want to create a desktop icon for the application.
    Then click **Next**
![Installation Step 2]
(https://thepracticaldev.s3.amazonaws.com/i/imwupttq8vx2bh7c9mt2.png)
    * Click **Install**
    * Wait till the installer finishes installing CYOMS
    ![Installation Step 3](https://thepracticaldev.s3.amazonaws.com/i/ziy9rxzgfgl070sx8f7q.png)
    * After installation completes, you will be asked if you want to launch CYOMS
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/ziy9rxzgfgl070sx8f7q.png)
 1. If you get the above screen you've **successfully** installed CYOMS
Build and deploy to NPM your React component with Neutrino.js - Little Bits
Tags: react, npm, javascript, neutrino
Published: 2019-09-06 15:45:56



##### Little Bits is a series of short articles explaining quick solutions to common dev problems. No unnecessary descriptions or code snippets. No bullshit.


In this short article, I want to show you how you can easily set up your dev environment for building React component and then how you can deploy it to NPM so other developers can start using it.

#### Useful links:
- [Neutrino JS](https://neutrinojs.org)
- [NPM publishing docs](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry)


#### Plan
1. Create a project - yarn or npx
2. Build a component or use the default one
3. Run build
4. Prepare package.json file
5. Deploy to NPM


### 1. Create a project - yarn or npx
```
yarn create @neutrinojs/project my-not-really-exciting-component
```
or
```
npx @neutrinojs/create-project my-not-really-exciting-component
```
After that Neutrino will ask you about your project. Select `Components` -> `React components`. In the next step choose the testing library (I usually go for Jest) and linting style (Airbnb or StandardJS). Neutrino will install all the dependencies and set up the boilerplate.

### 2. Build a component or use the default one
Neutrino supplies us with a simple HelloWorld component. We will use it in this step, but obviously, in a real-world scenario, build something awesome. 
TIP: Add readme.md file with directions for installing, configuring, and using your code.
To run the dev environment run:
```
yarn start
```
or
```
npm start
```
That will open `localhost:5000` with your project.

### 3. Run build
If you're happy with your component run:
```
yarn run build
```
or
```
npm run build
```
Your project is optimized and ready for production.

### 4. Prepare package.json file
Before deploying our super component, we need to add some details to package.json. Here's a sample, minimal configuration:
```json
{
  "name": "my-not-really-exciting-component",
  "version": "1.0.0",
  "description": "My component, not really exicitng.",
  "main": "build/HelloWorld.js",
  "author": "Your Name <your_email@gmail.com>",
  "repository": {
    "type" : "git",
    "url" : "https://github.com/yourprofile/my-not-really-exciting-component"
  },
 "keywords": [
    "react",
    "javascript",
    "component"
  ],
  "license": "MIT",
  "scripts": {
    "build": "neutrino build",
    "start": "neutrino start",
    "lint": "neutrino lint",
    "test": "neutrino test"
  },
  "devDependencies": {
    "@neutrinojs/airbnb": "^8.3.0",
    "@neutrinojs/jest": "^8.3.0",
    "@neutrinojs/react-components": "^8.3.0",
    "neutrino": "^8.3.0",
    "prop-types": "^15.7.2",
    "react": "^16.9.0",
    "react-dom": "^16.9.0"
  }
}

```
### 5. Deploy to NPM
Create an account on [npm](https://www.npmjs.com/). After that, from your terminal simply run:
```
npm publish
```

### Summary
That's it, you've managed to successfully deploy your react component to the NPM registry. Now anyone else can start using it in their projects and you just need to prepare for all the dev fame coming your way 😎.
My Experience With Django
Tags: django, python, pythondjango
Published: 2019-09-06 15:30:26

---
title: My Experience With Django
published: true
description: What do I like/hate about Django. Personal Experience.
tags: #Django #Python #Python-Django
cover_image: https://thepracticaldev.s3.amazonaws.com/i/ey79edmacdvx54odq232.png
---

It's been quite sometime after leaving Laravel. I didn't want to do website development for a short interval of time and in that particular timeframe, I started working with Python. 


## Motivation
I had a software project and I know C#/WPF, so before starting to code the software, It came to my mind that you're learning Python, wouldn't it be cool if you can complete your software in python too? So I did. Python+PyQt5 and it was easy and helped me learn a couple of more things. 

All sorts of questions were answered by the same answer, "Python". You want to work with images, data, machine learning, website development, you can do all of this and more with Python programming language. 


#Experience
At this point, I'd left laravel and php completely. I was reading the Django official documentation and the words that were captivating to me were, "Rapid Application Development" in the Django documentation. I made my first project of todo app, had to write little code for doing most of the things. Another boost came when I learned about Django's auto admin panel and that boost went away when I realized it's really hard to customize the look and feel of the Django admin. Some people even advised me to prefer making my own admin panel if you need all sorts of customizations. I didn't even realize that not everyone asks for customizations. Most common things like header, site_title and the way you interact with your model in the admin panel, can be modified with fewer lines of code.

#Working with forms
man, I'd been creating forms in the templates for so long. Got introduced to ModelForm and oooh boi!. I mean like you literally have a form ready for your model just by like 5 lines of code? And wait, not only that, it does validation too and that too, automatically. 

#MTV architectural pattern
Easy to learn, nothing hard. It's not completely different from MVC either.

#Django messages (alerts)
Got introduced to Django messages framework. Is there anything more easy to work with? yeah, I had trouble memorizing the debug_levels but it's not difficult and certainly doesn't take much time to learn.

#Hosting
If you follow the docs correctly, it's a breeze. For Example, I forgot to include the static root in the settings.py, read the docs again and corrected my mistake. Ran the app and that's it. 

##Conclusion
So far, I've loved Django. Everything is simple, easy to follow but sometimes you'd have to dig deep down to understand how Django do certain things and by then you'd have gained enough experience so you won't stress about it.