Posts

Win32 Disk Imager - Error 5: Access is denied

I think this error actually has nothing to do with permissions; I think it's merely a result of a mismatch between the size of the SD and the image.  For instance, perhaps one reason some may have luck with work arounds involving reformatting the SD has to do with a resulting resize. Some options: Resize the volume to exactly match the image Use another imaging tool that is resilient to size differences, such as the Raspberry Pi Imager to write the image. Aside: I wouldn't normally blog about something like this; usually something like a forum response, but all relevant forums seem to be closed on this and I hope to save time for posterity. On a personal note, I really hate errors with a bunch of "xy and z worked for me" solutions scattered across the web and no root cause ideas.  Not only are they annoying to wade through, they tend to persist for years and cause people to do all sorts of odd things to their configurations, most of which they are unlikely to undo if ...

Getting up and running with the Raspberry Pi Compute Module 4

Image
Given how easy it is to get the board version of the Raspberry Pi 4 up and running, I figured that getting started with the compute module would be a walk in the park.  Not so.  The Compute Module 4 (CM) and Compute Module 4 IO Board are designed for more industrial usage, so there are more knobs and switches if you will. I hope I can save you some time.   Main caveats The USB host on the Compute Module 4 IO board are disabled by default. The MiniUART is disabled by default Bluetooth is disabled by default The SD Card only works for Lite (no eMMC) models of the compute modules As an aside, Compute Modules dissipate heat less than Raspberry Pi boards, so some level of at least passive cooling will be needed.  It's a good idea to at least add heat sinks to the CPU and other components before proceeding. So there are two main tasks ahead: Imaging the eMMC or SD Card Gaining terminal or desktop access Flashing your module If you have a Compute Module 4 Lite (...

Don't Repeat Yourself... Really!

...And I hope that someday That you, you people will all have the chance To read The Helping Friendly Book And experience the wisdom Of the great, the great and knowledgeable Man who wrote The Helping Friendly Book  Because he is, the great and knowledgeable He is the one, the only author of The Helping Friendly Book He is the man The great man The only, the special His name is The author of The Helping Friendly Book He is the great The knowledgeable, the one and the only The great, the knowledgeable Person who wrote The Helping Friendly Book His name could only be The one, the only, the only, the special The author of The Helping Friendly Book... -Excerpt from Icculus by Phish There are few mantras that are as universally agreed upon by Software Engineers as Don't Repeat Yourself or DRY.  It rings deeply and globally true that any form of code duplication is at best a compromise, at worst, an abominable trap.  Writing and maintaining...

Convolution Neural Networks for Image Categorization

Image
Why I''m writing this to help developers without a degree in artificial intelligence understand the subject, as most material on the matter is rather complex.  I am also hoping to shore up my own understanding as I am relatively new to the subject of deep learning neural networks.  What The problem domain is essentially a function whereby and image is passed in, and one or more categories result, each with an associated probability. A convolution neural network used for image categorization. There are many other similar use cases as well, such as gesture recognition but for this article we'll limit discussion to this case. More technically, a Convolution Neural Network (CNN) is a specific type of deep learning neural network which is comprised of: An input layer containing a bitmap. Some number of convolution layers, which apply convolution filters and output the result to the next layer. Some number of sub-sampling layers, which each downsize the data ...

Camtasia Studio Tips

Camtasia is great software for recording audio/screen presentations.  Here are some tips and standards we've used: Recording Change the recording options to record to ''AVI format'' (the CAMREC format can lose audio/video sync over a long recording) Recorded movies should be 800x600 or less unless there is a specific reason to record larger.  Using the smallest capture size possible improves the readability and reduces the file size. All videos should start with an announcement of what is being demonstrated (e.g. "This is a demonstration of the Device Capture System introduced in Cashwise 3.7) Don't record the application window; set one of your screens to 800x600 and record the screen.  This ensures that any popup windows or menus remain within the recorded region. If recording other than the primary screen, select 'region' and select then entire alternate screen Hide any toolbars or other desktop clutter. Run a short test to be sure that...

Web applications - now only 15 years behind!

It seems to me that web applications are finally approaching where "rich client" applications were in the late 90s. People are finally pooling together abstractions and forming UI toolkits around them.  What would be really great would be if we could skip 15 more years and stop using HTML altogether.

Down with whiners... Microsoft

I've pandered to, accommodated, supported, and even defended Microsoft for years now, but I'm through. To this point, they may have occasionally been the big bully, but more the special ed kid kind of bully than the vindictive Harvard graduate type. They've had a sort of unspoken culture of defensive litigation. Though they may have used some aggressive tactics, their overall approach has seemed to be: win the battle through providing better software. With their recent whining about how the open source world is stomping on all their B.S. patents, they have crossed the line. I don't like Microsoft any more. Go Linux! Go Mac!

Needed: voice tracking webcam

We recently acquired Logitech's motion tracking webcam in order to better capture presentations, discussions, and training sessions. In case you are interested, the camera is the Logitech QuickCam Orbit MP . The camera does what it advertises and does so pretty well.  As the presenter moves around, the camera keeps the person within the field of view.  As an aside I was a little surprised by the fact that this camera moves in small jolts rather than in a smooth manner.  Though the resulting video doesn't feel very professional, I would rather have this behavior that see constant movement as the system tries to decide where to point.  Perhaps with sufficiently sophisticated software, a gradual movement system would be better. Where the camera doesn't do as well is when more than one person is involved.  The camera basically seems to track the "biggest" movement, so in a presentation setting, if one person walks away from the center...

Example Oriented Programming

I was letting my mind wonder a bit this evening about how far one could take the idea of example base programming in order to make the programming process more concrete.  It seems natural to think of one or more concrete cases, then deduce abstractions from there, so why not allow the system to cooperate in the entire process.  Let me try to explain what I mean. Query By Example (QBE) is a heavily used and long established concept whereby the user provides an example of what data she seeks.  One could argue that modern search engines are in fact a form of QBE.  QBE was used successfully as a database query language in what used to be Borland's Paradox.  In a database context QBE is usually done only in a user interface context through a set of fields with allow the user to "filter" the dataset.  Paradox took this much further and defined a complete language in which to express even complex disjunctive queries.  When working in Par...

Enough software patent madness!

Say patent, and one might get a nostalgic tear in their eye as they envision a brave garage inventor, who, protected by his patent, earns what's due him thanks to legal protection against large greedy corporations. Enter reality. Now picture large corporations able to easily crush or control small businesses. Picture large companies being relentlessly attacked for money even though such companies have made every effort to respect other's claims. Picture an environment where anyone wishing to innovate is all but unable to do so because such effort will invariably step on an almost infinite and unknown set of patent "toes". To make things worse, there are those that are pushing for even more liberal patent laws , such as first-to-file, rather than first-to-invent. Something must be done to stop this! Patents are ruining the software industry and causing tremendous indirect damage to our country! Software shouldn't even be patentable. Patent law prohibits the...

Dataphor Frontend Future Thoughts

Just some meandering thoughts as I consider various possibilities for Dataphoria and the Windows Client. Observation: it seems that the history of approaches for engineering application processes has vacillated between two extremes: Let's call them structured and event based. In a structured approach we consider the whole. The most obvious example is a block of imperative programming code containing branching and looping constructs. There is a clear path or flow of execution through the components. Other embodiments of structured process engineering include traditional flow charting and more recently workflow management. An event based approach, on the other hand, deals with single moments or points of decision. The actual flow of logic is more dynamic and elusive. Another way of saying this is that each aspect or component of the application is defined as autonomously as possible. An example of this approach would be component based programming characterized by Rapid Applicatio...

Condition Propagation renamed: Proviso

Everyone who works in abstracts knows the importance of names. I've had to try to explain the concept of Condition Propagation (see Actively managing missing information through Condition Propagation ) several times now, and a major challenge has been the vague terminology involved. Specifically, the generic term condition, versus the formal concept I am trying to define. In an effort to be clearer, I am giving the "conditions" in the scheme I formerly called "Condition Propagation" a new name: provisos. This term's primary use is in regards to stipulations in contracts and legal documents, and so I am confident that its use in the context of computer languages should be unambiguous. I am still not sure if the concept of provisos as I have presented them is unique or not. I have observed several similarities to other previously raised concepts, but have yet to find a duplicate. I believe that provisos would eliminate many of the design and implementation cha...

Nice clarification of scientific "laws"

This jem was in a newsgroup of Steorn . Ok, I have seen a lot of BS posted on the forums regarding the misnomer 'Law' in science. Since I am an engineer, and have freshly studied mathematics, physics, and electromagnetics, I'm reasonably qualified to comment on this subject. First off, a phenomenon is observed. Then more. Eventually a large body of phenomena are observed that are related. (Faraday, for example, took hundreds of measurements of electric and magnetic fields, but lacked the math background and education to compile a single governing theory.) This is called experimental physics. Next, a theoretical physicisyt (and I don't mean that one is incapable of doing the other, but I submit that anyone who compiles theory or does theory work is a theoretical physicist, even a schoolchild who derives ohm's law), takes that pile of evidence and constructs a set of governing equations. In this case, that was done by James Clerk Maxwell, into Maxwell's equa...

Issues raised by polymorphism in relation land

I continue to ponder how to merge the Relational Model (RM) and Object Oriented (OO) worlds in order produce a best-of language. The task is a challenge due to the deep and fundamental differences between OO and the RM. One approach I am exploring is to utilize the notion of multiple logical representations to allow both to co-exist without compromise. Doing this, though, means pinning down canonical isomorphisms between the two models. One important concept from the OO world is polymorphism. In OO land, we identify a useful abstract concept like "Contact" and build a class around it. We then build classes for more specific types of contacts such as Organization and Person. A challenge for me has been to identify a clearly obvious equivalent to this design in relation land. This has proven quite elusive because there are several relational designs that seem to qualify. The design that seems most commonly used involves a "type" table of some sort followed by tables c...

TTMs Subset types and OOP

In The Third Manifesto, C. J. Date and Darwen criticize OOP type systems for placing more attributes in subclasses. Intuitively the criticism seems justified, because from a Cartesian product perspective, more attributes implies more possible values. Their point is then, how can a sub-type have more possible values than a super-type? It occurs to me, however, that there is a subtlety being missed. The domain of possible values may be fewer in sub-classes, so long as the additional attributes are considered as part of a more "detailed" representation. In other words, the original representation holds at the level of the super-type (which is utilized in polymorphism), but a more detailed representation may be used in sub-types. Such mangling of representations is not allowed by their suggested type system, but the isomorphism seems to fit situation for OOP. None of this is to say that the OOP model doesn't have its flaws, I only wish to point out that there may be mu...

Actively managing missing information through Condition Propagation

Few dead horses have been beaten as severely as the "missing information" one, yet I shall now drag it out and resume the thrashing. When arguing matters of null, discussion usually centers on "optional" columns in tables, but I wish to start on constructs that seem to me to be related, yet are rarely if ever discussed as such. Consider the following: Points[10]; As I see it, there are four primary ways in which a system may deal with the range issues surrounding the indexer: Always give a point value even if this means interpreting memory beyond the actual items allocated for the array. This is the approach taken in some cases by many pointer based languages. Implement the indexer as a condition check followed by exception propagation logic if the condition fails; in other words, at runtime stop processing at whatever level and raise an error. This is the approach taken by most modern languages. Implement the indexer with a runtime range check and return the null n...

Virtual Appliances... poodoo

What I wish to address is this: "With the rise of virtualization, applications will transform into virtual appliances. Virtual appliances simplify application deployment by delivering the complete software stack—from OS to the application—as a single, integrated unit." -SDTimes Web Seminar Abstract Lest I be seen using VMs and am accused of being hypocritical: Virtualization is great for configuration testing. There is no better way to test against Oracle or Windows 98 without having to install such icky things than a VM. "Virtual Appliances", however, are a different story. Though they may “seem” exciting, and may be a practical solution given today’s technology and today’s problems, I find the trend disturbing. Why? ...Because a) the entire approach is grossly inefficient; and b) this is just another chapter in the long history of industry repetition. Setting aside the inefficiency aspect for a moment, isn’t this form of “run anywhere” virtualization exactly...

Normalized polarity

Though strikingly obvious to me now, I've often sought a quick (expressive) way to determine the normalized polarity of a number. What I am esoterically calling a normalized polarity is: a function that is 1 for all positive numbers, 0 for 0, and -1 for all negative numbers. I have often found the normalized polarity useful in financial and graphics/layout contexts. The now obvious solution is to treat zero as identity, otherwise divide the number by the absolute value of itself. create operator NormalizedPolarity(AX : Decimal) : Integer begin result := if AX = 0 then 0 else (AX / Abs(AX)).ToInteger(); end; Examples (using D4): select NormalizedPolarity(-2.3); // -1 select NormalizedPolarity(554.1); // 1 select NormalizedPolarity(0); // 0 Sorry if this seems painfully obvious, just thought I would share in case...

Shakespear Programming Language

Wow... and I thought VB was verbose! http://shakespearelang.sourceforge.net/report/shakespeare/

How to destroy the Earth

I thoroughly enjoyed this, though the author did present as fact, many of today's tenuous theories (e.g. animatter, microscopic black hole!). http://qntm.org/destroy