Have you read the Low End Box interview series?

Back in April we started publishing interviews of industry leaders on Low End Box as part of our interview style Q/A sessions. We started talking about this back in March on Low End Talk and we still invite anyone interested in being interviewed as part of this series to speak up!

Thus far we’ve published five in total:

Interview: Q&A with RackNerd CEO Dustin B. Cisneros on Leading, Learning, Help and Execution

Interview: Q&A with Nexus Bytes CEO Nahian on the Hosting Industry and a Customer First Approach

Interview: Q&A with CrossBox.io on the Software Industry, Small Business, and Making a Difference

Interview: Q&A with EstNOC CEO Ego Ennok on Web Hosting, Virtualization and Running a Small Business

Interview: Q&A with MXroute Owner Jarland Donnell on Email Delivery, the Hosting Industry and a look back

All four interviews were detailed and informative and if you haven’t read them yet, take a few minutes and do so.

If you have a suggestion for who we should interview next please leave your ideas in the comments below.

Jon Biloh

I’m Jon Biloh and I own LowEndBox and LowEndTalk. I’ve spent my nearly 20 year career in IT building companies and now I’m excited to focus on building and enhancing the community at LowEndBox and LowEndTalk.

Can’t read superbock on /dev/sdb

I have a problem with an external USB storage. It does not mount. Maybe it is no data on the USB stick but it is also interesting to understand why this happened.

Disk /dev/sdb: 14,5 GiB, 15552479232 bytes, 30375936 sectors
Disk model: DataTraveler 3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x500a0dff

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sdb1       1948285285 3650263507 1701978223 811,6G 6e unknown
/dev/sdb2                0          0          0     0B 74 unknown
/dev/sdb4         28049408   28049848        441 220,5K  0 Empty

Then I tried to repair it.

fsck -y /dev/sdb
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
 Automatically removing dirty bit.
There are differences between boot sector and its backup.
This is mostly harmless. Differences: (offset:original/backup)
  0:eb/00, 1:58/00, 2:90/00, 3:4d/00, 4:53/00, 5:44/00, 6:4f/00, 7:53/00
  , 8:35/00, 9:2e/00, 10:30/00, 12:02/00, 13:10/00, 14:40/00, 15:0c/00
  , 16:02/00, 21:f8/00, 24:3f/00, 26:ff/00, 29:08/00, 33:78/00, 34:cf/00
  , 35:01/00, 36:e0/00, 37:39/00, 44:02/00, 48:01/00, 50:06/00, 64:80/00
  , 66:29/00, 67:6c/00, 68:e3/00, 69:1a/00, 70:b0/00, 71:4e/00, 72:4f/00
  , 73:20/00, 74:4e/00, 75:41/00, 76:4d/00, 77:45/00, 78:20/00, 79:20/00
  , 80:20/00, 81:20/00, 82:46/00, 83:41/00, 84:54/00, 85:33/00, 86:32/00
  , 87:20/00, 88:20/00, 89:20/00, 90:33/00, 91:c9/00, 92:8e/00, 93:d1/00
  , 94:bc/00, 95:f4/00, 96:7b/00, 97:8e/00, 98:c1/00, 99:8e/00, 100:d9/00
  , 101:bd/00, 103:7c/00, 104:88/00, 105:56/00, 106:40/00, 107:88/00
  , 108:4e/00, 109:02/00, 110:8a/00, 111:56/00, 112:40/00, 113:b4/00
  , 114:41/00, 115:bb/00, 116:aa/00, 117:55/00, 118:cd/00, 119:13/00
  , 120:72/00, 121:10/00, 122:81/00, 123:fb/00, 124:55/00, 125:aa/00
  , 126:75/00, 127:0a/00, 128:f6/00, 129:c1/00, 130:01/00, 131:74/00
  , 132:05/00, 133:fe/00, 134:46/00, 135:02/00, 136:eb/00, 137:2d/00
  , 138:8a/00, 139:56/00, 140:40/00, 141:b4/00, 142:08/00, 143:cd/00
  , 144:13/00, 145:73/00, 146:05/00, 147:b9/00, 148:ff/00, 149:ff/00
  , 150:8a/00, 151:f1/00, 152:66/00, 153:0f/00, 154:b6/00, 155:c6/00
  , 156:40/00, 157:66/00, 158:0f/00, 159:b6/00, 160:d1/00, 161:80/00
  , 162:e2/00, 163:3f/00, 164:f7/00, 165:e2/00, 166:86/00, 167:cd/00
  , 168:c0/00, 169:ed/00, 170:06/00, 171:41/00, 172:66/00, 173:0f/00
  , 174:b7/00, 175:c9/00, 176:66/00, 177:f7/00, 178:e1/00, 179:66/00
  , 180:89/00, 181:46/00, 182:f8/00, 183:83/00, 184:7e/00, 185:16/00
  , 187:75/00, 188:39/00, 189:83/00, 190:7e/00, 191:2a/00, 193:77/00
  , 194:33/00, 195:66/00, 196:8b/00, 197:46/00, 198:1c/00, 199:66/00
  , 200:83/00, 201:c0/00, 202:0c/00, 203:bb/00, 205:80/00, 206:b9/00
  , 207:01/00, 209:e8/00, 210:2c/00, 212:e9/00, 213:a8/00, 214:03/00
  , 215:a1/00, 216:f8/00, 217:7d/00, 218:80/00, 219:c4/00, 220:7c/00
  , 221:8b/00, 222:f0/00, 223:ac/00, 224:84/00, 225:c0/00, 226:74/00
  , 227:17/00, 228:3c/00, 229:ff/00, 230:74/00, 231:09/00, 232:b4/00
  , 233:0e/00, 234:bb/00, 235:07/00, 237:cd/00, 238:10/00, 239:eb/00
  , 240:ee/00, 241:a1/00, 242:fa/00, 243:7d/00, 244:eb/00, 245:e4/00
  , 246:a1/00, 247:7d/00, 248:80/00, 249:eb/00, 250:df/00, 251:98/00
  , 252:cd/00, 253:16/00, 254:cd/00, 255:19/00, 256:66/00, 257:60/00
  , 258:80/00, 259:7e/00, 260:02/00, 262:0f/00, 263:84/00, 264:20/00
  , 266:66/00, 267:6a/00, 269:66/00, 270:50/00, 271:06/00, 272:53/00
  , 273:66/00, 274:68/00, 275:10/00, 277:01/00, 279:b4/00, 280:42/00
  , 281:8a/00, 282:56/00, 283:40/00, 284:8b/00, 285:f4/00, 286:cd/00
  , 287:13/00, 288:66/00, 289:58/00, 290:66/00, 291:58/00, 292:66/00
  , 293:58/00, 294:66/00, 295:58/00, 296:eb/00, 297:33/00, 298:66/00
  , 299:3b/00, 300:46/00, 301:f8/00, 302:72/00, 303:03/00, 304:f9/00
  , 305:eb/00, 306:2a/00, 307:66/00, 308:33/00, 309:d2/00, 310:66/00
  , 311:0f/00, 312:b7/00, 313:4e/00, 314:18/00, 315:66/00, 316:f7/00
  , 317:f1/00, 318:fe/00, 319:c2/00, 320:8a/00, 321:ca/00, 322:66/00
  , 323:8b/00, 324:d0/00, 325:66/00, 326:c1/00, 327:ea/00, 328:10/00
  , 329:f7/00, 330:76/00, 331:1a/00, 332:86/00, 333:d6/00, 334:8a/00
  , 335:56/00, 336:40/00, 337:8a/00, 338:e8/00, 339:c0/00, 340:e4/00
  , 341:06/00, 342:0a/00, 343:cc/00, 344:b8/00, 345:01/00, 346:02/00
  , 347:cd/00, 348:13/00, 349:66/00, 350:61/00, 351:0f/00, 352:82/00
  , 353:74/00, 354:ff/00, 355:81/00, 356:c3/00, 358:02/00, 359:66/00
  , 360:40/00, 361:49/00, 362:75/00, 363:94/00, 364:c3/00, 365:42/00
  , 366:4f/00, 367:4f/00, 368:54/00, 369:4d/00, 370:47/00, 371:52/00
  , 372:20/00, 373:20/00, 374:20/00, 375:20/00, 428:0d/00, 429:0a/00
  , 430:44/00, 431:69/00, 432:73/00, 433:6b/00, 434:20/00, 435:65/00
  , 436:72/00, 437:72/00, 438:6f/00, 439:72/00, 440:ff/00, 441:0d/00
  , 442:0a/00, 443:50/00, 444:72/00, 445:65/00, 446:73/00, 447:73/00
  , 448:20/00, 449:61/00, 450:6e/00, 451:79/00, 452:20/00, 453:6b/00
  , 454:65/00, 455:79/00, 456:20/00, 457:74/00, 458:6f/00, 459:20/00
  , 460:72/00, 461:65/00, 462:73/00, 463:74/00, 464:61/00, 465:72/00
  , 466:74/00, 467:0d/00, 468:0a/00, 504:ac/00, 505:01/00, 506:b9/00
  , 507:01/00, 510:55/00, 511:aa/00
  Not automatically fixing this.
FSINFO sector has bad magic number(s):
  Offset 0: 0x00000000 != expected 0x41615252
  Offset 484: 0x00000000 != expected 0x61417272
  Offset 508: 0x00000000 != expected 0xaa550000
  Auto-correcting it.
/
  Contains a free cluster (2). Assuming EOF.
FAT32 root dir starts with a bad cluster!

I also tried to recover it with the program testdisk but I failed. Any ideas? Can I check if it is actually no files and safe to format it? Why did this happen?

endpoint to get more read posts in a wordpress blog

I am reading Endpoint reference exposed from wordpress api but I don’t see an endpoint to get more read post(s) and popular post.

There is an endpoint to retreive all posts https://example.com/wp-json/wp/v2/post.

Is there an endpoint or query parameter(s) missing to get more read post(s) and popular post without use a wordpress plugin (wordpress beginner) ?

Bitcoin Giveaway Scams! Beware and please read this… | Forum Promotion

I feel like I need to post this everywhere possible because it’s quite an issue and unsuspecting people may fall for it. These appear everywhere and the losses are quite huge because we are dealing with Bitcoin here…
So, I’ve seen some of these for the last few weeks but decided to make this after I got one on YouTube again. These type of scams are mainly on YouTube in the form of livestream.
They usually impersonate someone famous/well-known such as Elon Musk or Jeff Bezos through a video of them in an old conference or interview being played in the livestream to give the false idea of them speaking in real-time and relating to the “giveaway”. It is usually titled “Bitcoin giveaway or Bitcoin exchange”. These livestreams usually make it to the front of people’s YouTube page because bots are used to increase subscriber counts and views to create false authenticity. YouTube does take them down after a while but it’s still too long…
To lure victims further, there may also be a message talking about the “deep economic crisis” in particular due to Coronavirus at this period of time or something along the lines of an how everything is currently unstable and that cryptocurrency is much safer.
It will then offer a “back-bonus system” where you send Bitcoin and they send you back double what you put in and some bonus. Here is an example:

scam.jpg

So hopefully you guys will be aware of these “livestreams” and their nature. It is actually quite sophisticated due to the great lengths they go through. Hopefully this will save someone losing out to such a scam :]

 

javascript – Cannot read property ‘loginWithRedirect’ of null with auth0

Im new to auth0 and have been trying to implement it using their tutorial here
but im encountering this error

Cannot read property ‘loginWithRedirect’ of null

The error occurs in my auth0-context.js file
and points to loginWithRedirect in configObject inside render

import React, { Component, createContext } from 'react'
import createAuth0Client from '@auth0/auth0-spa-js';


export const Auth0Context = createContext();
export class Auth0Provider extends Component {

state = {
    auth0Client: null,
    isLoading: true,
    isAuthenticated: false,
    user: null
}

config = {
    domain: process.env.REACT_APP_AUTH0_DOMAIN,
    client_id: process.env.REACT_APP_AUTH0_CLIENT_ID,
    redirect_uri: 'http://localhost:3000/dashboard'
    
}

componentDidMount() {
    this.initializeAuth0();
}

initializeAuth0 = async () => {
    const auth0Client = await createAuth0Client(this.config);
    const isAuthenticated = await auth0Client.isAuthenticated();
    const user = isAuthenticated ? await auth0Client.getUser() : null;

    this.setState({ auth0Client, isLoading: false, isAuthenticated, user })
}

render() {
    const { auth0Client, isLoading, isAuthenticated, user } = this.state;
    const { children: children } = this.props;

    const configObject = {
        isLoading,
        isAuthenticated,
        loginWithRedirect: (...p) => auth0Client.loginWithRedirect(...p),
        getTokenSilently: (...p) => auth0Client.getTokenSilently(...p),
        getIdTokenClaims: (...p) => auth0Client.getIdTokenClaims(...p),
        logout: (...p) => auth0Client.logout(...p)

    };

    return (
        <div>
            <Auth0Context.Provider value={configObject}>
                {children}
            </Auth0Context.Provider>
        </div>
    )
}

}

Im calling loginWithRedirect in my App.js file

        <Button onClick={auth0.loginWithRedirect}>Login</Button>

The error is weird because because it worked for the first time and I had a successful login but stopped working after that.

apple watch – Siri shortcut fails to launch saying “The calendar is read only.”

I’ve created a simple shortcut on my iPhone app that saves current date/time to reminders. It requires access to Location and Reminders. It works fine when I launch it on the iPhone (saying “Привет, Siri. Запусти %shortcut name%” – “Hello, Siri. Launch %shortcut name%”), but when I try the same thing on my Apple Watch it says “К сожалению, что-то пошло не так. The calendar is read only.” – “Something went wrong. The calendar is read only”. I don’t understand why it seems to attempt modifying calendar data and what can I try to fix that?

MySQL read explain – using where

In Oracle there is an important note in the explain plain where it says filter a.col1=... this one letting you know col1 is first retrieved from the disk and only then filter is been done. This important piece of information let you know the exact column been used within a specific index and which are filter after and may be good candidate for index.

In MySQL explain result we see something like:

+----+-------------+-------+------------+--------+--------------------+---------+-------+--------+----------+------------------------------------+
| id | select_type | table | partitions | type   | key                | key_len | ref   | rows   | filtered | Extra                              |
+----+-------------+-------+------------+--------+--------------------+---------+-------+--------+----------+------------------------------------+
|  1 | SIMPLE      | SD    | NULL       | range  | ix_store_composite | 64      | NULL  | 252978 |    60.00 | Using index condition; Using where |
+----+-------------+-------+------------+--------+--------------------+---------+-------+--------+----------+------------------------------------+

What I would like to know which of the columns data are coming from the index and which are been filtered after (the using where).
I couldn’t find any option to get additional detail on the explain

c# – How can .Net Core Web API read a multipart upload from .Net 4x?

I have a legacy client that uploads a file to a web API using multipart/form-data. But, I cannot read this in from a .Net Core 3.1 Web API controller.

I have tried various approaches to read the uploaded file, but these do not work, such as:

(HttpPost)
(Route("upload"))
public async Task<string> Upload((FromForm) IFormFile file)
{
   // file is null

    IFormCollection     form   = await this.Request.ReadFormAsync();
    IFormFileCollection files = form?.Files; // Empty
}

(HttpPost)
(Route("upload"))
public async Task<string> Upload((FromForm) IEnumerable<IFormFile> files)
{
   // files is null
}

The .Net 4 code that uploads the file is as follows:

private HttpResponseMessage UploadFileToSupportApiCore(string filename)
{
   HttpResponseMessage response;
   using (var client = new HttpClient())
   {
       client.BaseAddress = new Uri("http://localhost:6003/");
       using (var content = new MultipartFormDataContent())
       {
           var fileContent = new StreamContent(File.OpenRead(filename));
           fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {FileName = Path.GetFileName(filename)};
           
           content.Add(fileContent);
           response = client.PostAsync("upload", content).Result;
       }
   }
   return response;
}

How can I read this uploaded file from a .Net Core 3.1 Web API controller?