I apologize for only contributing occasionally to SoylentNews. I've been mostly off-line and, since Apr 2018, working on a website. It seem like a contradiction to have no radio, no television, no telephone, no Internet connection and work on a website but let me explain.
You'd think that I'd be an Internet millionaire. Maybe I am a millionaire but I'd like to make another million from another venture. (Actually, I've been a paper millionaire. From direct experience, that involved eating noodles multiple meals in a row.) With far less ethics, I would certainly be a millionaire. Unfortunately, the time has come to compromise my ethics. I hope to compromise my ethics as little as possible but this could be a succession of compromises.
A modern money-getting venture invariably requires a website. This is often the first mistake. A brief read of Joe Karbo's book: The Lazy Mans's Guide To Riches (either edition) describes mail order business principles which are incredibly similar to e-commerce. In particular, and from direct experience, a shopping basket with credit card integration will, at most, double sales. This magnifying effect means that zero doubled is still zero. A chain of logic, from emperical observations, leads to the conclusion that a venture should be profitable without a website or shopping basket. As I noted, the website is often the first mistake. This is because it is a trap.
The first failure is a venture which is focused on style rather than substance. Such websites invariably fail. A venture which correctly focuses on content may also fail but a certain level of expertise greatly helps. In part, this prevents an overly ambitious venture which is doomed to fail. It also ensures that a website is implemented competently. From emperical observation, the threshold of competence is just beyond the ability to use SQL JOIN with appropriate database indexes. I don't want to be contentious because there are numerous cases where not using SQL is a distinct advantage. However, there has to be a very good business reason to discard ad hoc queries. A search engine is a very good case for not using SQL. A search engine is a special case of partial ordered, partially materialized JOIN for the purpose of displaying the most likely results. Even if you do this, you very probably aren't doing it at the scale required to discard a conventional database.
From reading Tracy Kidder's book: The Soul Of A New Machine and the direct experience of friends, programming was a tedious practice which often occurred in absence of a computer. This involved a formal definition of a problem, use cases, data structures, flow-charts, pseudo-code and dry runs before making punch cards. The deployed program may be the second, third or fourth implementation. Nowadays, a prototype system may gain one million users before the venture is acquired by a conglomerate. Said conglomerate then grafts a subsequent implementation onto its NoSQL infrastructure. On this basis alone, software should be written for conciseness and correctness rather than efficiency. People complain that modern software is in a state of perpetual beta testing but this is a symptom of fast processors and cheap memory which only tangentially encourages poor programming practices.
Indeed, I am a victim of Moore's law. I am no longer a database field consultant because people make the same mistake on much larger systems. With the exception of some market leaders, the majority of organizations grow slower than Moore's law and the related laws for bandwidth and image quality until their function becomes trivial. As an example, it is difficult to write a spell check within 128KB RAM. A dictionary of words is typically larger than 128KB and word stemming was quite awkward to implement at speed. For this reason, when Microsoft Word required a spell check function, Microsoft merely acquired a company with a working implementation. It seems outrageous to acquire a company to obtain a spell check. It can be written very concisely in a scripting language but that doesn't work on an 8MHz system with 128KB RAM. Likewise, it is difficult to write a search engine within 16MB RAM but trivial to write in a scripting language with 1GB RAM.
Anyhow, the brief for the website is quite loose:-
More specifically:-
Plan to have a website which lists products speculatively and/or which are manufactured on demand. Trivial products include a buzzer game or an alarm clock. More substantial products may include a 5W per channel, 32 channel audio amplifier or a hydroponic controller in (matching) 1U rack-mount boxes. There is no reason to discontinue products unless parts become scarce. There is incentive to design products using the least variation of components. This allows more products to be manufactured from a fixed quantity of stock. However, it does make designs more susceptible to component scarcity. Most tediously, this may require standardizing resistor and capacitor values across products.
Although component costs may fall, overall costs, such as shipping, may rise. We don't want to be in the situation where someone orders a large quantity of products, all of the components are in stock but a sale loses money, either through labor/opportunity cost or returns on a marginal design. To counter this, component costs, labor and other costs will be defined as exponentials. For example, component cost may be defined as a specific cost on a specific day plus an increase of 10% per year. A monthly re-build of the static website plus hashes allows advertised prices to be honored - even if purchase occurs during site re-build. This may occur without tracking details too closely. If correctly configured, legacy products default to being too expensive rather than being too cheap.
Preferable to have a basic website, such as Wikipedia, CraigsList, Reddit or SoylentNews where the focus is on (allegedly) factual content. However, whipper-snappers prefer audio, video and animation. Ignoring this, desktop computer sales are steady in a growing market and the majority of casual use (and consumer spending) is on touch-screens devices of various descriptions. How is it possible to satisfy the majority of use cases while making a website which is easy to use while looking old, crufty and corporate? It is very simple and actually saves work. After the transition from the hierarchical Gopher protocol to the more free-form HTTP, people tried various navigation constructs including virtual galleries, virtual offices and virtual cities with street numbers. And then people moved back to a hierarchical structure. Steve Krug's book: Don't Make Me Think! explains in more detail. A brief overview is that navigation elements should be a blend of newspaper layout and department store signage. A trite summary would be "copy Amazon.Com slavishly" but Steve Krug notes that they've thought about it more than you and they have more turnover than you.
The website is also a place for orphaned content and software. Much of the software is CGI scripts and therefore they can be run via the website. The intention is for more people to ask "How many people update your website?" There is about 100,000 words or orphan content (excluding 80,000 words on SoylentNews) and at least 20,000 words which can be gleaned from e-mail. Also have more than four hours of video presentations. This can all be strung together with Makefile configurations and one of the numerous static HTML builders. While there is no shortage of content at the leafs of the website, it is tedious to repeatedly summarize branches towards the root. There is also the matter of intertwingularity in which anyone without a masters degree in library science is unlikely to devise a taxonomy which accomodates all content in a obvious manner.
This deficiency can be largely covered with large, clickable icons. The design of the icons is not too important. It helps if they don't change frequently but they function as landmarks in the navigational structure. Some people will merely select the red one followed by the stripey one or suchlike. Actually, icons towards the root of the navigational structure will be deliberately bad to provide fake antiquity. This is described fully in the Ye Olde section of the book: The Bluffer's Guide To Small Business. Essentially, antiquated style and unrounded pricing contributes to a corporate image of longevity, steadfastness and trustworthiness.
The icons have to be really obviously hyperlinked. This can be achieved by ignoring the fashionable, minimal, flat, Bauhuas style and having 1980s style mwm style bevelled edges. This was popularized in Microsoft Windows3.0 but was yet another innovation which was devised elsewhere. Bevelled edges can be automated with ImageMagick's convert -raise 12 or similar. What should be the size of the icons? I'm off-line and I have better things to do than find common sizes of icons. However, it should be noted that an icon bookmarked via a touch-screen interface may be promoted to the main menu icon tray typically found on a tablet or smartphone. From cached webpages, there are references to square icon sizes 16×16, 32, 48, 57, 60, 64, 70, 72, 76, 96, 114, 120, 128, 144, 150, 152, 155, 160, 167, 180, 192, 194, 256, 270 and 310 pixels. (256×256 was found on the ARM Developer website.) Cannot guarantee any size has been used by any device or that list is complete. However, much looks like Apple idiocy. In the era of MacOS7, it was common to design icons of different sizes for a 2 color MacIntosh, a 16 color MacIntosh, a 256 color MacIntosh and a 16 million color MacIntosh. Omissions were frequent (along with Balloon Help "text goes here" or suchlike). However, when all Apple devices support 16 million colors, vector image formats and MIP mapping, it is inexcusable to require multiple icon sizes in meta-data (sent to all clients) to support a device which may not be supported by Apple. Screw that, we're designing everything as 256×256 pixels and MIP mapping down by a factor of two or more. (We suspect the ARM Developers had a similar sentiment.) It is also useful to design buttons which are 256×96 pixels to be similarly scaled. This 8:3 ratio is very similar to the ratio of the legacy 88×31 pixel button format and it is quite easy to upscale legacy buttons. Also designing 8:1 ratio banners although this very probably requires further research.
Anyhow, there is lazy method to fill the void between the content. This will be complimented by text descriptions but there is primarily a casual interface which can be accessed easily on a small screen. The laziest part is that many of the icons are designed with OpenOffice Draw and pasted to GIMP. This technique casts vector to bitmap prior to MIP mapping, bevelling and other trashing of mediocre designs. Many designs use the same template but use different fonts, colors or gradients. Some designs are above average but the majority look like amateur corporate logos - and that's good enough. It looks worst on a thumb sheet where 300 logos are tightly bunched. However, it looks more moderate when there are 20 or less icons which are suitable spaced and captioned.
Icon spacing is adapted from some HTML <table> abuse learned from a ex-colleague. This is probably not original but he implemented a grid of products which automatically fills width of a web browser. This requires tweaking CSS display properties of <table>, <a> and, optionally, <span>. By default, <h1>, <p>, <table> and other HTML tags are rendered as block level elements. Whereas, <a>, <img> and other HTML tags are rendered inline. This is mutable on a per tag basis. Indeed, by having single-cell tables which are all the same width and with CSS display: inline, tables flow as a grid. When a web browser's width is changed (desktop window resize or touch-screen device is tilted), tables re-flow to a different number of columns. Furthermore, if <a> is set to CSS display: block then an icon, caption and all contiguous surround space is hyperlinked. Furthermore, where sub-categories have a hyperlink to a parent directory, use of <span> may make an up button unprintable. Therefore, any attempt to print a category of icons will omit the icon to the parent category and possibly allow the remaining icons to be printed in less space.
This menu system is most obviously applied to static HTML. It can also be applied to scripts. Indeed, it is possible to take 20 year old PERL4 scripts from Matt's Script Archive and - with suitable icons and meta-data - make them accessible like "apps" on a smartphone. But, like, in the cloud 'n' stuff. It is also possible to nest menus deeper than is typically allowed on a smartphone. However, we have yet to explain how menu and scripts all obtain the same style as the static website. This requires consideration of the history of dynamic content over HTTP. This probably omits developments but covers the important cases. Initially, there was no dynamic content. Then people wrote custom web servers so that URLs were dynamic rather than mapping directly to static files. Then there was server-side image maps with a URL suffix in the format ?(x,y). Then there was forms with HTTP Method GET parameters suffixed in the format ?foo=1&bar=2. Then there was client-side image maps. Then there was HTTP Method POST. This detacted parameters from URLs and was useful for file upload and to circumvent client implementation limitations of HTTP Auth. Then there was extended HTTP Method POST which preserved file meta-data, such as file name. Within a CGI environment on a Unix server (one of many server environments), HTTP Method is passed to a script as an environment variable. HTTP Method GET parameters are passed as a separate environment variable whereas HTTP Method POST is available via Unix stdin. This is rather messy but fits with the historical development of dynamic content. Command line arguments aren't used but this dormant mechanism can be used for testing scripts or using them outside of a CGI environment. In the laziest case, it is possible to create sub-directories within /cgi-bin/ and within each sub-directory, have a shell script called index.cgi with the following content:-
#!/bin/sh
./prog.cgi $@ | ./wrapper.cgi $@
This allows separation of content and style in a manner which was not feasible when CGI was developed in the 1990s. It remains infeasible to deploy this on a high-volume website but it significantly eases development. The shell script uses a Unix pipe to pass the output of the application logic to a styling wrapper script. This has several uses. It allows a naked application to be tested without HTML style. The shell script propagates environment variables and command line parameters to the application and the wrapper. This allows common functionality, such as session management, to be off-loaded to the wrapper. Unfortunately, only the application receives HTTP Method POST parameters. Fortunately, the majority of scripts do not require HTTP Method POST and the remainder may pass parameters of interest to the wrapper. Meanwhile, the wrapper may re-write URLs to ensure session keys are always propagated. The wrapper may perform performance measurements, grammatical checks, sampling of output, redaction and rate limiting. It is also possible for the wrapper to distill a superset of HTML into something more conventional. When such functionality is separated, programs are typically less than 10KB and the wrapper is less than 100KB (but common to all scripts written in all programming languages from all sources). It is also possible to provide a central location for HTTP cache header configuration. Obviously, as functionality increases, processing load also increases. This make the technique unsuitable for popular websites unless caching is very well tuned. Regardless, it is a technique to shrink legacy scripts while improving the quality and consistency of their output.
There are three unresolved problems when using a wrapper script. All are easily overcome. The first problem is that scripts typically make incorrect URL references to themselves. A script should use the provided environment variable. It is more common to use $0 (or similar) or a parameter name defined in the begining of the script. It is tedious to correct and test all cases. The second problem is the HTTP looks like e-mail and output from CGI scripts is no exception. Specifically, RFC822 style colon separated headers (with optional tabs, spaces and indented line breaks) are followed by a blank line and then the content. The header should specify a MIME type and therefore, in some modes, the output of a script may not be HTML. In this case, the wrapper should pass-through the content unchanged. The third problem is that trivial implementation of the wrapper may introduce considerable latency. This is greatly reduced if processing occurs incrementally. In the trivial case, it should be possible to distill </box> separately from <box> or defer processing of <rainbowtext> until the tag is closed.
Although the wrapper creates additional system bottleneck and additional latency, this is unlikely to be a significant problem if the application is I/O intensive (for example, if the application makes heavy database queries) or milti-core hosting is available. This was typically unavailable when CGI was typically deployed on 25MHz single-core servers with 16MB RAM. For low-volume use, this is not a problem for a 700MHz dual-core server with 256MB RAM. Indeed, it runs quite well on many credit-card size computers.
This is not a complete guide to boot-strapping and mega-corporation by only using electronics which will fit in a rucksack but it demonstrates that it is possible to make something which is above average without considerable skill. Joe Karbo noted that an average product or service covers half of the market. Presumably, further improvement leads to diminishing returns. Also, in a case of less is more, being the best may also imply being the most abstract and detached.
Without being too abstract, it is possible to comprehensively satisfy one part of the Joel Test. Specifically, it is possible compile a web server, compile a database, compile a script interpreter, build a website, tutorial videos and/or embedded software with one invocation. This is important because style isn't.
I will be posting considerably less technical content over the next month or three. If you want more technical content, I highly recommend an introduction to the Plan9 Operating System. I also highly recommend DTACK Grounded which describes how to make a fast, small computer using a Motorola 68000 processor optionally with a 8087 co-processor. Similar systems (and dup) have been covered on SoylentNews.
To go really highbrow here in my journal.
Yo mama so fat that when she sits around the house, she sits around the house!
Yo mama so ugly that they need to tie a steak on to get the dog to play with her!
Yo mama so fat, she got her own zip code!
Yo mama so stank, she's her own superfund site!
Yo mama so stupid, when I told her I had to take a piss, she asked for it back!
Yo mama so ugly, she crashed Facebook's facial recognition software!
Yo mama so fat, her blood type is Ragu!
There's a good start. Please tell us more about 'Yo mama'!
Not for the first time, the thought has occurred to me that an empire, defined as any nation with an expansionist and/or colonialist system of existence, bears several striking resemblances to parasitic and parasitoid species. Beyond simple resource theft, I speak mostly of parallels to how these organisms often lose functions from their own genomes in favor of allowing the host to perform them instead...and their subsequent complete dependence on said host species. When the hosts either die out or move on, the parasite too withers and dies.
There has been a pattern throughout history of analogous processes taking place in imperialist nations. What chiefly concerns me here is the effective outsourcing of both manufacture and raw-material procurement, beyond what is necessary due to said resource not existing natively or lack of infrastructure at home. Rome, in its middle and latter days, relied on grain imports and slave labor. Britain's loss of India had much to do with its economic dependence on its colony, for textile manufacture for example. And I don't think I need to paint you a picture of the effects of globalization on the US's economy, specifically with regard to wage depression and overseas flight of production.
What all these have in common is that the people at the top are essentially trading the vitality and independent function of the nation they rule--and make no mistake, the golden rule, that the guys with the gold make the rules, is and has always been in full force--for their own personal enrichment. Whether it be kings or CEOs of multinational corporations with US headquarters, the end effect is the same, because the concentration of power is the same.
(Incidentally, this is why the Citizens United decision was such a complete disaster and why lobbying itself ought to be illegal: making money does not always coincide with the interests of the nation, and very often opposes them in a global society.)
So...where does this end? Eventually, the empire in question allocates more resources to maintaining its "interests" (read: colonies) overseas and across borders than it does internally. And the citizens of the empire, especially the poorer ones, suffer more and more over time. There grows, between the moneyed powers and the average citizen, a great, impassible chasm, a gap of not just material wealth but of anomie and hopelessness. The laws and law enforcement apparatus turn inward, protecting not citizens from criminals, but the haves from the have-nots. Long-term planning by the ruling class for the good of the nation becomes not just impossible, not just unthinkable, but outright mocked. The average citizen completely loses faith in the institutions of the nation, and with good reason, for they have become an enemy and they see the citizens as such.
Add to this that no empire ever truly got its power and resource base by above-board, honest, peaceful means--with the possible exception of the Marshall Plan, and even that struck me, all the way back in sixth grade, as a particularly cynical piece of international brinksmanship. Empires have terrible karma. They become ringed with enemies, many of whom may at one point have been allies. Foolish decisions regarding allies and trade and warfare are made. Eventually, the global order shifts...and the empire in question, overextended beyond endurance, demoralized from within, decadent and incompetent and decrepit from decades of internal misrule, is vulnerable and weak and *completely* unable even to see the coming seismic shift as it happens, let alone respond to it after the fact.
Time flows like a river. History does not repeat, but it does rhyme. Care to guess where the US is in this pattern?
...and the shop owner got invited to speak at GOP rallies?
Remembering when a baker turned away Joe Biden and received praise from conservatives
The Red Hen isn’t the first Virginia business to bake up controversy by rejecting a political figure’s business.
The owner of a cookie shop turned down the opportunity to serve Vice President Joe Biden in 2012 — and the right embraced him as their small business hero.
He made the decision “because of conviction and principle,” the shop owner told CBS affiliate WDBJ 7 at the time. “I have a difference of opinion of the folks in that campaign, that’s what it was. Also, taking a stance for my faith, my faith in God.”
McMurray’s story was thrust into the national spotlight with the help of conservative news sites, blogs and the wide-reaching Drudge Report. It eventually caught the eye of Paul Ryan, the Republican Party’s Vice Presidential nominee at the time, who requested that McMurray introduce him at rally in Roanoke a few weeks later.
Welp...just got back from a doctor's appointment for some routine bloodwork. Good news is I'm down to 159 lb--this in all clothes less shoes and with a big meal in me. Bad news is, somehow, I've *shrunk* about 2 inches, and can no longer use the phrase "six-foot dyke in steel-toed work boots." I mean, "five-foot-ten dyke in steel-toed work boots" doesn't have quite the same punch to it, you know? But the measure doesn't lie: 178cm, 5'10" on the dot.
And no one can tell me WTF happened there. If my mother's any indication there's almost 20 years still to go to menopause, and I haven't lost any bone or muscle mass. A co-worker about my age says she lost an inch a couple of years ago and the doctor told her it was bad posture, but I don't slouch, so...who knows?
Odd. This bugs me more than it ought to to be honest.
First it was a deterrent. Then it wasn’t.
It was a new Justice Department policy. Then it wasn’t.
The Trump administration was simply following the law. Then it said separations weren’t required by law.
It could not be reversed by executive order. Then it was.
President Trump’s political gambit to force an immigration bill through Congress backfired Wednesday amid a series of wildly contradictory statements — which you can see for yourself in the video above — from a White House that has been without a communications director since Hope Hicks left in March.
Man.....if only someone had pointed that out, repeatedly, over the last few days only to have posters swear up and down that Trump was telling the truth. You all willing to admit you were wrong yet?
On World Refugee Day, we join the United Nations High Commissioner for Refugees and our international partners in commemorating the strength, courage, and resilience of millions of refugees worldwide who have been forced to flee their homes due to persecution and conflict.
As global displacement has reached record levels, it is vital that new actors – including governments, international financial institutions, and the private sector – come to the table to assist in the global response to address it. The United States will continue to be a world leader in providing humanitarian assistance and working to forge political solutions to the underlying conflicts that drive displacement.
I mean, sure, we'll send your children to an internment camp for the crime of applying for asylum. But, other than that, the US is totally down to help!
United States Commemorates World Refugee Day [www.state.gov]
President Donald Trump’s former campaign chairman Paul Manafort is going to jail.
On Friday, Manafort was ordered into custody after a federal judge revoked his house arrest, citing newly filed obstruction of justice charges. The move by U.S. District Judge Amy Berman Jackson made Manafort the first Trump campaign official to be jailed as part of special counsel Robert Mueller’s investigation.
Already under intense pressure to cooperate with prosecutors in hopes of securing leniency, Manafort now loses the relative freedom he enjoyed while he prepared for two criminal trials in which he faces the possibility of spending the rest of his life in prison.
Remember all those unproven allegations lobbed at the Clinton Foundation without any evidence? Turns out Trump was projecting again and it was HIS foundation committing crimes, according to the NY Attorney General.
The New York attorney general filed suit against President Trump and his three eldest children Thursday, alleging “persistently illegal conduct” at the president’s personal charity, saying Trump repeatedly misused the nonprofit organization — to pay off his businesses’ creditors, to decorate one of his golf clubs and to stage a multimillion-dollar giveaway at his 2016 campaign events.
In the suit, filed Thursday morning, Attorney General Barbara Underwood asked a state judge to dissolve the Donald J. Trump Foundation. She asked that its remaining $1 million in assets be distributed to other charities and that Trump be forced to pay at least $2.8 million in restitution and penalties.
Underwood said that oversight of spending at Trump’s foundation was so loose that its board of directors hadn’t met in 19 years, and its official treasurer wasn’t even aware that he was on the board.
Instead, she said, the foundation came to serve the spending needs of Trump — and then, in 2016, the needs of his presidential campaign. She cited emails from Trump campaign staff members, directing which charities should receive gifts from the Trump Foundation, and in what amounts.
New York files suit against President Trump, alleging his charity engaged in ‘illegal conduct’