DNS settings remain set after TAP use #180

case "disconnect":
    // Delete direct route for the VPN gateway
    echo("Deleting Direct Route for VPN Gateway");
    exec("route delete " + env("VPNGATEWAY") + " mask 255.255.255.255");
    exec("netsh interface ip set dns " + env("TUNIDX") + " source=static 8.8.8.8")
    exec("netsh interface ip delete dns " + env("TUNIDX") + " 8.8.8.8")
https://github.com/openconnect/openconnect-gui/issues/180 Use above code for use with Openconnect 1.5.3

Why Software is the Ultimate Business Model (and the data to prove it)

I often say that if Warren Buffett were 30 years old, he’d only invest in software. Here’s why…

1. The Demand for Software is very strong and stable — Spend on software has grown at ~9% for about a decade. Looking forward Gartner estimates show that the Software category is expected to grow 8–11% versus the U.S. economy at 2–3% and broader technology spending at 3–4%. Software is a GOOD neighborhood to live in.

Continue reading “Why Software is the Ultimate Business Model (and the data to prove it)”

Coding Tip: Try to Code Without Loops

source: https://edgecoders.com/coding-tip-try-to-code-without-loops-18694cf06428

You might uncover better solutions

In a previous article, I wrote about how trying to solve coding challenges without using if-statements might help uncover better solutions. In this article, we will explore how to solve some more challenges, but this time without using any loops.

By loops, I mean imperative loops like for, for...in, for...of, while, and do...while. All of these are similar in the way that they provide an imperative way to perform iterations. The alternative is to perform iterations in a declarative way. Continue reading “Coding Tip: Try to Code Without Loops”

[Chicken-users] [ANN] CHICKEN 5.0.0 has been released


From: Peter Bex
Subject: [Chicken-users] [ANN] CHICKEN 5.0.0 has been released
Date: Wed, 7 Nov 2018 19:53:30 +0100
User-agent: NeoMutt/20170113 (1.7.2)

Dear CHICKEN users,

We are proud to announce the immediate availability of
CHICKEN 5.0.0 at the following URL:
https://code.call-cc.org/releases/5.0.0/chicken-5.0.0.tar.gz

This tarball has the following SHA256 checksum:
a8b94bb94c5d6a4348cedd75dc334ac80924bcd9a7a7a3d6af5121e57ef66595

It has been a long stretch, but we finally made it!

This release contains the largest number of big-impact changes
we've made since the CHICKEN 4.0.0 release.

Most importantly, we have completely overhauled the module layout so
that it should make more sense where each identifier is located.
For a quick overview of where things are, see the page we used for
discussion of these changes:
https://wiki.call-cc.org/core-libraries-reorganization

The manual has of course also been updated to reflect these new modules:
https://wiki.call-cc.org/man/5/Included%20modules

Other notable features are:
- Full numeric tower
- A new declarative egg description format for chicken-install
- Improved support for static linking (eggs are now also compiled statically)
- "Deployment" mode has been dropped as it was less portable and reliable
  than static linking.
- Builds are fully bit-for-bit reproducible (for core, but user code too)
- Random numbers now use a better PRNG than libc rand() (namely, WELL512)
- Core has gone on a diet: several libraries have been moved to eggs, like
   srfi-1, srfi-13, srfi-14, srfi-18, srfi-69, and several other things.

The (very long!) complete list of changes since version 4.13.0 is
available here: https://code.call-cc.org/dev-snapshots/2018/08/11/NEWS

Because the testing period has been quite long, we've managed to port
many of the most important eggs to CHICKEN 5 already.  You can view them
at the new subdomain, see https://eggs.call-cc.org/5

Of course for the time being, not everyone can immediately switch to
CHICKEN 5 for everything, so https://eggs.call-cc.org/4 also works.

If you have code you want to port, we've created a porting guide that
covers the most important pitfalls:
https://wiki.call-cc.org/porting-c4-to-c5

Many thanks to everyone in the community for their enthusiasm, mental
support and help with testing all this new code and enthusiastically
porting stuff to CHICKEN 5 even back when it was barely ready!

Regards,
The CHICKEN Team

Attachment: signature.asc
Description: PGP signature

The Bcrypt Protocol… is kind of a mess

While writing my own bcrypt library, being unsatisfied with the current Java de-facto standard implementation jBcrypt, I discovered a lot of odd things surrounding the bcrypt protocol (mind you: not the underlying cryptographic primitive ‘Eksblowfish’).

Bcrypt is a password hashing function designed by Niels Provos and David Mazières in 1999 which became popular as the default password hash algorithm for OpenBSD¹. In comparison to simple cryptographic hash functions (like SHA-256), the main benefit of using bcrypt is that a developer can set how expensive it is to calculate the hash. This is called key stretching and should be used with any (usually weak) user provided password to protect against brute force attacks (i.e. simple guessing).

 

Introduction to Bcrypt

So how does it work? First you need a password and set the iteration count as a logarithmic work factor between 4–31, doubling the required computation every increment. So for example it could look like this:

bcrypt("secretPassword", 8)

which may output

Continue reading “The Bcrypt Protocol… is kind of a mess”

Why Americans are sticking with older phones

Source: https://www.wsj.com/articles/upgrade-no-thanks-americans-are-sticking-with-their-old-phones-1540818000

Americans are holding on to their smartphones for longer than ever.

Pricier devices, fewer subsidies from carriers and the demise of the two-year cellphone contract have led consumers to wait an average of 2.83 years to upgrade their smartphones, according to data for the third quarter from HYLA Mobile Inc., a mobile-device trade-in company that works with carriers and big-box stores. That is up from 2.39 years two years earlier.
Continue reading “Why Americans are sticking with older phones”

Understanding How Apache Pulsar Works

Source: https://jack-vanlightly.com/blog/2018/10/2/understanding-how-apache-pulsar-works

I will be writing a series of blog posts about Apache Pulsar, including some Kafka vs Pulsar posts. First up though I will be running some chaos tests on a Pulsar cluster like I have done with RabbitMQ and Kafka to see what failure modes it has and its message loss scenarios.

I will try to do this by either exploiting design defects, implementation bugs or poor configuration on the part of the admin or developer.

Continue reading “Understanding How Apache Pulsar Works”

2018/10/16

1. The Key to Becoming a Software Consultant

https://daedtech.com/key-becoming-software-consultant/

But, to achieve your objective, you need to position yourself as an actual consultant, getting paid for advice.

He talks about four phases of solving problems for companies.  Those include diagnosis, prescribing a cure, application of the cure, and re-application of the cure.  Software developers and most so-called software consultants involve themselves almost exclusively in phase three: application.  But that’s a pretty low leverage place to be. Consultants exist almost exclusively in phases one and two: diagnosing and prescribing.  They let laborers take care of phase three and even lower status laborers take care of phase four.

2. How Lisp Became God’s Own Programming Language

https://twobithistory.org/2018/10/14/lisp.html

But people learn Lisp instead because they know that, for twenty years or so, the Lisp point of view was thought to be so useful that MIT taught Lisp to undergraduates before anything else.

What happened instead is that more and more Lisp-y features have been incorporated into everyone’s favorite programming languages.