I wrote a comment in the FCC proceeding to “streamline” rules for small satellites, for Open Research Institute.
Crystal, as currently deployed on Linux, creates rather large executables. On my system, a zero-length source file results in an executable of 1087016 bytes in size, with a instruction size of 726121 bytes, 2856 bytes of initialized data, and 1263736 bytes of filled-with-zero-on-demand data (“bss”). This is a problem for embedded use. For example, if I could cross-compile to my ESP32 (ignoring that LLVM doesn’t have its instruction set implemented) I would already be using all of the available memory.
If I was to write an operating system kernel in Crystal, I’d want to have a specially-tweaked support library, as Linux has for common C APIs.
Fortunately, it is pretty easy to build Crystal programs without their support library. This will give you a program with no garbage collection, no exception handling, and no support libraries for Crystal’s built-in classes. It is now your job to fill these in to the extent that you want or need to.
Having stripped out the support library, a minimal Crystal program will compile to an executable only a few kilobytes in size.
Before you get too deep into this, be warned: objects won’t work the way you expect, and are probably pretty broken until they get some library support. The program as I show it below leaks memory, and may not allocate memory properly. There is no garbage collection and no exception handling. I may have written bugs. All of this is left as an exercise for the reader, this is Open Source at work 🙂
Here is a simple Hello World program in Crystal, creating and using a class, and printing a message. Compile this with the command:
crystal build minimal.cr --prelude="empty" -p --release --no-debug
require "lib_c" require "lib_c/i686-linux-gnu/c/stdlib" require "lib_c/i686-linux-gnu/c/stdio" def free(object) LibC.free(pointerof(object)) end class String def to_unsafe pointerof(@c) end end class Foo def bar LibC.printf "Hello, World!\n" end end f = Foo.new f.bar free(f)
The executable emitted by compiling this is only 6304 bytes in size after the symbol table has been stripped. Instructions are 2179 bytes and initialized data 600 bytes, fill-with-zero-on-demand data is only 16 bytes. It loads with three shared libraries: linux-vdso.so.1, libc.so.6, ld-linux-x86-64.so.2 . These are of course much larger than the program. Doing without these libraries is left as another exercise for the reader.
Obviously the above program is meant to build on i686. Modify “i686-linux-gnu” to be your architecture, and if you are on a different OS, the libraries required above may be different.
The advent of Category 7 cable, which includes four individually shielded twisted pairs, has introduced grounding to the concerns of the network engineer. The general advice of wire manufacturers, and the general configuration of pre-manufactured cables, is for both ends to be grounded. This is contrary to common knowledge in electrical engineering regarding ground loops and the potential for lightning-induced current.
Some purported electrical engineers assert that a shield grounded at only one end is “not a shield at all”, but an RF filter resonant to RF frequencies at its quarter wavelength, and will induce voltage to internal conductors at that frequency. They neglect to mention that a shield grounded at both ends also has resonant frequencies and can induce voltage to its internal conductors.
No configuration of grounding results in a shield always being a low-impedance path to ground across its entire length, for anything but DC and low frequencies. There will always be high-voltage points and null points across its length, for any frequency with a wavelength approaching or smaller than 4 times the circuit length, where the circuit includes the ground path between both ends of the shield if the shield is connected at both ends.
Grounding both ends of the shield simply increases the circuit length, creating a loop with external conductors, including conductive soil. This makes the circuit more vulnerable to lower frequencies than it would be otherwise, and admits additional possibilities for lightning currents to be introduced onto the shield. And you can’t count on the conductors being balanced such that induced currents oppose each other across the length of the circuit.
You must also consider that conductive soil is not a perfect sink to RF currents. Radio Amateurs learn that soil, unaugmented by radial wires, generally makes a poor counterpoise. The ground system in your building is anything but a theoretically perfect ground plane, and will in general present a high impedance at RF. Induced lightning voltage across the soil is a possibility with nearby strikes.
This is one reason for use of optical fiber, especially in areas where lightning-induced currents or RF interference (emitted or received) is a problem. No problems with electrostatic or magnetic induction when you use optical fiber. But we eventually transition to copper or aluminum at the ends of fiber runs. We must then consider lightning-induced currents and how to shield them.
Lightning frequencies are generally low, and energy is generally distributed across frequencies with a 1/f characteristic: more energy at lower frequencies. In this case, grounding the shield at both ends can indeed cause a shield that would be unresonant if single-point grounded to conduct significant energy. Ferrite chokes and other inductive means of increasing the external shield impedance are ineffective at blocking lightning-induced current, because they saturate.
So, I’ll be using single-ended grounding for my application, if for no other reason than that it removes so many unknowns from the equation. I suggest that those who wish to do otherwise actually attempt to model the circuit for its RF resonance and potential for induction of lightning current, using NEC or similar software.
We’re all used to having dynamically-loaded shared libraries for C and C++ programs. The effectiveness of shared libraries depends on having an API with well-defined types. This is good for C, which allows only one type per argument, and C++, which allows some type flexibility based on abstract types and inheritance.
Crystal, however, is not like this (see my introduction to Crystal). The duck-typing in Crystal is somewhat similar to C++ templates, but without the ugly syntax. A function like this:
def add(a, b) a + b end
… can take any type for a and b, as long as they implement the + method. The code compiled and the return value will be different depending on the types provided. Because Crystal has global type inference, you need to compile the entire program, including the library, every time. That allows types to be inferred through the library code and its return to the caller.
So, shared libraries don’t make much sense in this context. They work because they have a tightly-typed API, which normal Crystal programs wouldn’t, and they assume that modules are independent of each other, which breaks down with modern language features like duck typing and type inference.
The cost is that we have somewhat more memory usage than we might for the equivalent C program. The benefit is that we use less programmer time on development and debugging, and we get increased code correctness because any incompatible type (including nil) is flagged as an error. Ultimately, memory is much cheaper than programmers.
There is also a potential performance increase over C, because there will be less need for the automatic type conversion with which C math operations are liberally salted, and code will be optimized for the type. But any real speed advantage over C has not yet been demonstrated.
Where optimization beyond what Crystal can provide is necessary, we can turn to assembly and Crystal’s foreign function interface. In general, the need for this would be rare.
Over time, it’s struck me that want-to-be-entrepreneurs who spend a lot of time on networking before they have a product to sell are kidding themselves about being entrepreneurial.
The supposition is that you can meet other prospective entrepreneurs who can be of help in establishing and running your own business. I think the reality is that you have to spend a lot of solitary hours on making your product, and the time for networking is when you have something to sell.
The defining moment for me came with my momentary participation in an electronic entrepreneurs Meetup group. Actually, I never attended the first meet-up, but my participation leading into it was educational.
The prospective event was a tour of a local PCB manufacturer. The group leader first scheduled it as an hours-long “networking event” followed by the tour. I protested that I didn’t have time for the networking, and could I just join the group to tour the PCB manufacturer? The group leader allowed this.
I then emailed the PCB manufacturer asking for more information, saying I was a local electronics manufacturer and might like to use their business, and that I’d heard of them through the meetup group.
This is where things started to go wrong. The PCB manufacturer informed the meetup group leader that I’d contacted them independently. Perhaps he was just expressing his gratitude for the publicity, but in general as a business person I’d not give un-involved people details about customer inquiries. It would have been sufficient for him to tell the group leader that he’d had an inquiry, without mentioning my name. I resolved not to do business with this PCB manufacturer after all.
Then, the meetup group leader contacted me, upset that I had contacted the PCB manufacturer without going through him! Obviously, I am a business person and can not allow random people to decide who I do and don’t do business with. So, it seemed this “entrepreneurial meet-up” leader didn’t really have the first idea about what it meant to actually be in business.
I cancelled my reservation for the meetup and exited the group. To this day, I don’t understand the motivations of the people involved.
A lot of conference speakers are able to have their employer pay their way. Since I own my own small company, that is not possible for me and I make it clear on my site that if you want me to speak, you have to pay for my flight, hotel, and other expenses. Unfortunately there are conferences that act as if they have a hard time understanding this.
There are even conferences that stick me with the bill. For a conference in Russia a few years ago, I had to get a visa, which meant around $200 in expense and half a day sitting around the Russian embassy instead of consulting (a lot more than $200 lost). The for-profit company operating that conference cancelled their event (supposedly because of the Icelandic volcano and its effect upon air travel) and stopped responding to emails regarding their reimbursement of what I’d spent for a visa.
More recently a conference in a far-away place asked for me to help to pay for my own flight and lodging. I politely ended the discussion with that conference, explaining that I felt that my appearance would be a financial hardship to the conference and that it would not be fair to either of us to continue.
When I speak at a conference in a far-away place, I am generally losing at least a week of time in which I could be consulting and operating my own business. Between travel, jet-lag, and the speaking day at least 5 business days are used up. So, you can consider that my personal expense for time not spent on work is quite high, even if you pay all of my travel and lodging expenses.
It is also the case that speaking events hardly ever result in consulting employment. So, the opportunity to “network” and publicize my business seems to have very little value.
So, I am doing all of my speaking to promote the causes I am interested in, at significant cost to me even if you reimburse me for my expenses. And it is the rare speaking opportunity indeed that is able to offer an honorarium sufficient to compensate me for my time.
Open Source Security, Inc. and Bradley Spengler have presented a $300,000.00 supersedeas bond as a result of the court’s order in Open Source Security Inc. / Bradley Spengler v. Bruce Perens. I am unable to comment upon the case at this time, but see my previous comment upon asking the court for the award of fees for my defense.
The court has ordered Open Source Security, Inc, and Bradley Spengler to pay $259,900.50 in legal fees to my attorneys, O’Melveny and Meyers, for my defense in OSS/Spengler’s defamation lawsuit against me. The court awarded about half what we asked for, courts usually do reduce awards. There is no new comment at this time, but please see my comment upon asking for the award of legal fees.
Here are all of the case documents.
Elon Musk wants to fix the press, a sentiment that he’s recently made clear on Twitter, while simultaneously demonstrating that he doesn’t yet know how. What’s made Musk angry at the press, and where does it go from here?
First, let’s not pretend there is nothing wrong with the press. Americans are fed a diet of lies daily by outlets like Fox News, which have resulted in such things as the election of Donald Trump, a man with a total disregard for the truth and little competency to hold his office, endangering us all. Internet and broadcast press have fed the people asinine flights of fancy like “Pizzagate”.
The deliberate feeding of lies to the electorate, and thus improperly influencing elections with them, is not a first amendment issue. It’s a treasonous crime and we need to start treating it as one.
Musk really does have a valid complaint: Tesla has been treated unfairly, not only by the press but by the United States Government. It’s clear from U.S. crash statistics that brands other than Tesla are responsible for over 100 deaths per day, every day, 365 days a year. In contrast, a handful of people have died in Teslas. But every Tesla accident, not just every death, is front-page news in the press. And you’ll never hear that someone’s died in a Ford, while it’s likely that tens of people do die in Fords on any particular day.
Tesla is also the most shorted stock at present, with short positions covering more than a quarter of all outstanding shares and perhaps as much as one third. That means a great many investors are desperate to see Tesla’s stock reach a much lower price soon, or they’ll be forced to buy it at its present price in order to fulfill their short positions, potentially bankrupting many of them and sending some out of the windows of Wall Street skyscrapers. These investors are desperately seeding, feeding, and writing negative stories about Tesla in the hope of depressing the stock price. Musk recently taunted them by buying another 10 Million dollars in stock, making it even more likely that there won’t be enough stock in the market to cover short positions. If that’s the case, short-sellers could end up in debt for thousands of dollars per shorted share – as the price balloons until enough stockholders are persuaded to sell. Will short-sellers do anything to give Tesla bad press? You bet.
And of course there’s the interest of the gasoline industry, which will go out of business given the proliferation of fully-electric vehicles that are actually good enough to compete with gasoline ones, a position that only Tesla holds so far. Entrenched automotive manufacturers also have every reason to seed and feed bad press while they fail to build their own battery manufacturing plants. Before Tesla, one could see the obvious activities of these powers in seeding bad news about the Prius.
Then there’s the fact that Tesla does not advertise. Given the queue of Model 3 reservations, Tesla already has all of the sales they need for their next three years of their factory’s production, before they might have any economic reason to advertise. This can’t be comfortable for the press, and no doubt makes them more willing to carry stories seeded by those who would harm Tesla.
Tesla has a self-driving feature, one that the company is very clear is not ready for full autonomy and does not absolve the driver of the responsibility to remain in control of the vehicle. And a Tesla is powered by batteries. So, the NTSB, which is interested in self-driving and batteries, investigates each and every crash, and announces their investigations. They should stop making these announcements, which feed a hungry press, and probably should investigate more conventional vehicle crashes and make pronouncements regarding the hazards of driving without an autonomous system.
And finally, it’s interesting how Musk’s effort to start a rating outlet has inflamed the press, while Jeff Bezos purchase of the entire Washington Post did not provoke nearly so much abuse.
So, Musk is stuck with a press that feeds negative stories about Tesla seeded by short-sellers, business competitors and the petroleum industry, and even the U.S. Government. And paparazzi prey on his personal life, and even the ugly antics of Musk’s father. Sure, he’s annoyed.
Tesla isn’t the only one of Musk’s enterprises being treated this way. Bad press about SpaceX is often deliberately seeded by its competitors and even places that have profited from the old too-expensive and unambitious space programs and their contractors and are threatened by SpaceX’s lower prices.
Musk is far from the only one who suffers from this abuse. I was personally involved while the Linux developers were hounded by bad press for years from Forbes and lesser entities, backed by a large software company we all know (and who is, surprisingly, funding more Open Source these days), based on SCO’s unfounded lawsuit. Time proves them wrong, but don’t expect them to admit it, nor should you hold your breath for an “I’m sorry”.
Musk isn’t without blame in creating his bad perceptions. He’s posted self-indulgent wine-and-ambien-fueled tweets on lots of topics. Smart people before Musk have suffered from posting humor that is a sort of intelligence test, like Richard Stallman’s rhinophytonecrophilia joke. Mundanes and their press don’t understand this (or don’t choose to) and simply see it as weird. So, when Elon says he’s going to build a “Cyborg Dragon” or sells “Flamethrowers” (actually hardware-store lawn weed burners with some bling attached), dimmer lights can’t comprehend, and we get things like Miguel Santiago (D-Los Angeles, a district that profits immensely from Musk’s industries) attempting to legislate a ban.
Musk has money to back his ideas, and now proposes to start to review the press and post ratings at Pravduh. This could be useful, if it does the right thing. And that is to present factual evidence (not just Elon’s opinion) to demonstrate when the press is lying, and keep score.
For this to work, Musk himself has to completely divorce himself from control of such an entity, or it can never be trusted. He can start it off with a constitution and a staff, and a promise of money for a fixed duration, but it has to be hands off other than that from then on.
What would make this different from other fact-checkers, for example the venerable Snopes, would be that a Pravduh could build, over time, a well-documented quantitative case that press sources like Fox News lie pervasively and with planning.
The world would be a better place if this was done honestly, with integrity, and well. Musk is one who has improved the world by going where conventional wisdom said he’d fail, getting around the deadlock of NASA and pork-barrel contractors blocking less expensive access to space, and providing practical electric cars while other manufacturers suppressed them, provided handicapped versions that hadn’t a hope of competing with conventional cars, or built hybrids that were still tied to the gasoline infrastructure. Can the man who conquered these summits help us to get an honest press that properly informs the electorate before they vote? I sure hope so.
I went to Hamvention, and lobbied every ARRL director I met regarding the issue of the confidentiality rules and the Richard Norton N6AA Censure. Including at their donor reception. See this if you’re not up-to-speed on the issue.
It’s clear they have the message that the members are upset. There has been some feedback from Rick Roderick in print that is less than welcoming of dissent. I made a point in speaking with directors that they are a representative organization and must deal with opposition well. I also repeated my belief that this started with bad legal counsel, and that dealing with counsel that might not be the best is one of the most difficult jobs for any director who isn’t a lawyer.
Several directors told me that ARRL had obtained a bylaws template from the National Council of Non-Profits (or a similar organization) and would be submitting that language for member review before voting on it. It’s apparently different from the language, perhaps intended for a for-profit board, that they have partially suspended now. This new language is not yet published.
Rick Roderick (president) and two directors, in the ARRL booth, said that the Ethics and Elections committee would not prevent Richard Norton N6AA from running for director again because he had been censured. I had thought that the censure had the purpose of keeping him from running again, but perhaps they recognize the member sentiment.
However, ARRL directors and officers are not presently considering apologizing to Director Norton, who I believe suffered public defamation at their hands in what seems like ill-considered over-reaction. Nor does it seem the members will get any apology. What I heard from directors is that they consider the matter of Norton’s censure over and done with.
So, Dick Norton brings this whole matter to our attention, it sounds like it will be fixed due to your concern, but Norton suffers for having done it. Norton, of course, has been really nice about it. In his speech at the ARRL forum this year at the International DX Convention in Visalia, he treated everyone else as he would be treated, neither naming names nor speaking ill of others.
A white-paper on governance changes proposes that ARRL indemnify directors and officers against certain kinds of lawsuits. I agree with this. Having gone through a 3 Million Dollar lawsuit regarding my role in Open Source, I see the need and suggest that you approve of this.
The white paper also proposes a trivial addition to the name of ARRL in the bylaws, adding “ARRL, the national association for Amateur Radio”. This is because the by-laws date from the early 1900’s and are written for the purpose of ARRL as a message-relaying organization similar to NTS, rather than ARRL’s later role as a representative organization of Radio Amateurs.
So, IMO, those of us who have made noise have been heard and the entire organization will be better off for it. Let’s keep watching the issue and talking with ARRL directors and staff.
— Bruce Perens K6BP