5331 private links
How long can you work on making a routine task more efficient before you're spending more time than you save? [across five years]
How often you do the job
vs
how much time you shave off
MakeCode is typically accessed at https://makecode.microbit.org/ where create, modify, and run your projects while you’re online. You can can use MakeCode when you’re offline too. Here are some ways you can work with MakeCode offline:
Offline app
The MakeCode editor is available as app which you can install on a computer with Windows or Mac OS. Once installed, the MakeCode Offline App lets you create, run, and download your projects to the micro:bit. It works the same as the Web application does in your browser but it’s a stand-alone application that will work when a connection to the internet is restricted or not available.
Discover how to use the micro:bit in 5 easy steps! You can program the micro:bit on both desktop (Macs, PCs, Chromebooks, Linux, including Raspberry Pi) and mobile.
John Graham-Cumming wrote an article today complaining about how a computer system he was working with described his last name as having invalid characters. It of course does not, because anything someone tells you is their name is — by definition — an appropriate identifier for them. John was understandably vexed about this situation, and he has every right to be, because names are central to our identities, virtually by definition.
I have lived in Japan for several years, programming in a professional capacity, and I have broken many systems by the simple expedient of being introduced into them. (Most people call me Patrick McKenzie, but I’ll acknowledge as correct any of six different “full” names, any many systems I deal with will accept precisely none of them.) Similarly, I’ve worked with Big Freaking Enterprises which, by dint of doing business globally, have theoretically designed their systems to allow all names to work in them. I have never seen a computer system which handles names properly and doubt one exists, anywhere.
So, as a public service, I’m going to list assumptions your systems probably make about names. All of these assumptions are wrong. Try to make less of them next time you write a system which touches names.
- People have exactly one canonical full name.
- People have exactly one full name which they go by.
- People have, at this point in time, exactly one canonical full name.
- People have, at this point in time, one full name which they go by.
- People have exactly N names, for any value of N.
- People’s names fit within a certain defined amount of space.
//
This list is by no means exhaustive. If you need examples of real names which disprove any of the above commonly held misconceptions, I will happily introduce you to several. Feel free to add other misconceptions in the comments, and refer people to this post the next time they suggest a genius idea like a database table with a first_name and last_name column.
If there was one course I could add to every engineering education, it wouldn’t involve compilers or gates or time complexity. It would be Realities Of Your Industry 101, because we don’t teach them and this results in lots of unnecessary pain and suffering. This post aspires to be README.txt for your career as a young engineer. The goal is to make you happy, by filling in the gaps in your education regarding how the “real world” actually works. It took me about ten years and a lot of suffering to figure out some of this, starting from “fairly bright engineer with low self-confidence and zero practical knowledge of business.” I wouldn’t trust this as the definitive guide, but hopefully it will provide value over what your college Career Center isn’t telling you.
90% of programming jobs are in creating Line of Business software: Economics 101: the price for anything (including you) is a function of the supply of it and demand for it. Let’s talk about the demand side first. Most software is not sold in boxes, available on the Internet, or downloaded from the App Store. Most software is boring one-off applications in corporations, under-girding every imaginable facet of the global economy. It tracks expenses, it optimizes shipping costs, it assists the accounting department in preparing projections, it helps design new widgets, it prices insurance policies, it flags orders for manual review by the fraud department, etc etc. Software solves business problems. Software often solves business problems despite being soul-crushingly boring and of minimal technical complexity.
Engineers are hired to create business value, not to program thing
s: Businesses do things for irrational and political reasons all the time (see below), but in the main they converge on doing things which increase revenue or reduce costs. Status in well-run businesses generally is awarded to people who successfully take credit for doing one of these things. (That can, but does not necessarily, entail actually doing them.) Don’t call yourself a programmer: Instead, describe yourself by what you have accomplished for previously employers vis-a-vis increasing revenues or reducing costs. If you have not had the opportunity to do this yet, describe things which suggest you have the ability to increase revenue or reduce costs, or ideas to do so.
How much money do engineers make?
Wrong question. The right question is “What kind of offers do engineers routinely work for?”, because salary is one of many levers that people can use to motivate you. The answer to this is, less than helpfully, “Offers are all over the map.”
Your most important professional skill is communication: Remember engineers are not hired to create programs and how they are hired to create business value? The dominant quality which gets you jobs is the ability to give people the perception that you will create value. This is not necessarily coextensive with ability to create value.
All business decisions are ultimately made by one or a handful of multi-cellular organisms closely related to chimpanzees, not by rules or by algorithms: People are people. Social grooming is a really important skill. People will often back suggestions by friends because they are friends, even when other suggestions might actually be better. People will often be favoritably disposed to people they have broken bread with.
At the end of the day, your life happiness will not be dominated by your career. Either talk to older people or trust the social scientists who have: family, faith, hobbies, etc etc generally swamp career achievements and money in terms of things which actually produce happiness. Optimize appropriately. Your career is important, and right now it might seem like the most important thing in your life, but odds are that is not what you’ll believe forever. Work to live, don’t live to work.
About Author
Patrick McKenzie (patio11) ran four small software businesses. He writes about software, marketing, sales, and general business topics. Opinions here are his own.
Frustrated by programming language shortcomings, Guido van Rossum created Python. With the language now used by millions, Nick Heath talks to van Rossum about Python's past and explores what's next.
GET CREATIVE
GET CONNECTED
GET CODING
BBC micro:bit is a tiny programmable computer, designed to make learning and teaching easy and fun!
One researcher's discovery suggests troubling oversights in Boeing's cybersecurity.
A ".com" file was a hang over from the C/PM days of the 1970's, put simply, in essense it was a memory image of the executable code that got loaded directly into memory at a known offset (100h). MS-DOS then jumped to that address and started executing the code. Thus all a malware writer had to do was start the .com code with a three byte jump instruction to get past a block of "random bytes" to the start of the XOR decryption engine. The block of random bytes could likewise be any length even random as it's length could be easily calculated from the the jump address. The decryption engine then walked it's way down the image in memory decrypting it's self as it went repeatedly using the "random bytes". Thus the payload would be decrypted and then executed. In turn the first payload could be a "Run Length Decoder" or similar to expand a second payload, as long as it all stayed within the 64Kbyte limit it would work. Most ASM programers of the time --and if you wrote PC Code back then you were an ASM programer-- could cut their own version of such XOR code in at most an afternoon using debug.com[2] and the run length coder in a day as it was most certainly not "Rocket Science".
[2] Like much else Microsoft sold debug.com was not originally developed or even purchased by them. It was written in 1980 by Tim Paterson who put it into the public domain. So Microsoft just used it in MS-DOS 2.X onwards, with as far as I remember no acknowledgment at all. For those of use that knew that, the Bill Gates "rant" letter about people copying BASIC struck us as hypocritical at best.
F* is a verification-oriented programming language developed at Microsoft Research, MSR-Inria, and Inria. It follows in the tradition of the ML family of languages in that it is a typed, strict, functional programming language.
Everest is a recursive acronym: It stands for the “Everest VERified End-to-end Secure Transport”. //
Project Everest addresses this problem by constructing a high-performance, standards-compliant, formally verified implementation of components in HTTPS ecosystem, including TLS, the main protocol at the heart of HTTPS, as well as the main underlying cryptographic algorithms such as AES, SHA2 or X25519. //
We aim for our verified components to be drop-in replacements suitable for use in mainstream web browsers, servers, and other popular tools and are actively working with the community at large to improve the ecosystem.
Project Everest is the combination of the following projects. Read below for an easy way to install all these projects together.
- F*, a verification language for effectful programs
- miTLS, reference implementation of the TLS protocol in F*
- KreMLin, a compiler from a subset of F* to C
- HACL, a verified library of cryptographic primitives written in F
- Vale, a domain-specific language for verified cryptographic primitives in assembly
- EverCrypt, a verified crypto provider that combines HACL* and Vale via an agile, multi-platform, self-configuring cryptographic API.
EverCrypt is a formally verified modern cryptographic provider that provides cross-platform support as well as platform-specific optimizations that are automatically enabled if processor support is detected (multiplexing). Furthermore, EverCrypt offers an (agile) API that makes it simple to switch between algorithms (e.g., from SHA2 to SHA3).
EverCrypt is written and verified using the F* programming language, then compiled to a mixture of C (using a dedicated compiler, KreMLin) and assembly.
EverCrypt's formal verification involves using software tools to analyze all possible behaviors of a program and prove mathematically that they comply with the code's specification (i.e., a machine-readable description of the developer's intentions). Unlike software testing, formal verification provides strong guarantees that a program behaves as expected and is free from entire classes of errors.
Portions of EverCrypt are being used in Firefox, the Windows kernel, the Tezos blockchain, and the Wireguard VPN.