Let's break that down. You've got the cost of getting it to mars. You've got the cost of the rover itself. You've got the cost of operations.

Cost to mars is fundamentally about mass and size. The rover uses curiosity rover parts and is about 3 meters long, 2.7 meters wide, and 2.2 meters tall. Mass should be about 900 kg. They plan to use an Atlas V for launch which costs about $200m. Balance: $1.8 billion. But wait, this article says the LV cost 20% of $2.5b or $500m. That's quite a price range, but still leaves us a balance of $1.5 billion.

As mentioned, this rover uses parts made for the earlier curiosity rover. Basically it's curiosity 2. I can't find costs for it alone or for operational costs.

$1.5b should get us more than a radio control car that can barely do any exploring. What if we did the following instead...

A high school challenge: for $1000 each, high schools compete to build small rovers with a standard battery, camera and solar cell package provided to them with perhaps one other instrument of their choice.. SpaceX sends a quantity of them in it's 2018 red Dragon flight. The kids operated the rovers for free. Scientists get to look over their shoulders as much as they like. Expect each rover to have different methods of locomotion. Let the kids innovate and explore at their pace in whatever direction they like. Assume each rover is about 20 kg, they could send about a 100 of them per Dragon.

A hundred small rovers going in different directions would do a lot more exploring than one $1.5b rover and cost about $1.499 billion less.

My entry would be a regular radio controlled car inside a huge clear plastic ball. The weight of the car driving up the wall of the ball would move it in any direction. The ball would get scratches, but so what? Another method of locomotion might be jumping.

Friday, July 29, 2016

I just got a phone call (432-848-3015) from someone who said they were from google business. Recently I bought a domain name from godaddy. Then later decided I'd better have a backup so got another from google. This caller asked me what business I was in. When I said programmer the line went dead.

...all branches of government conspired over more than a century to turn the Constitution that the Framers wrote in 1787, plus the Bill of Rights that James Madison shepherded through the first Congress in 1789 and the Fourteenth Amendment ratified in 1868, into something their authors would neither recognize nor endorse.

the bedrock constitutional principle was simply to ensure that America does not “convert a limited into an unlimited Govt.”

Madison’s nightmare has become America’s everyday reality.

“The practice of creating independent regulatory commissions, who perform administrative work in addition to judicial work,” Roosevelt himself admitted, “threatens to develop a ‘fourth branch’ of Government for which there is no sanction in the Constitution.”

The solution? If any of these agencies are a good idea they should only exist at the state level. At the federal level they deprive citizens of the vote. At the state level citizens can vote with their feet. This is why we have states. Otherwise we could eliminate states from being a maker of laws.

...for being too nice to the customer. In most companies programmers don't interact with customers; they have other people to do that (unless the programmer is the company.) Instead they have customer representatives if a long term service is being provided or just salesman otherwise. When I was a kid working in NYC, we had a customer in Ohio. I flew out there to install a system I wrote (in dBase II multi-user. Never heard of it? That's because we were a test site and the product was never released to the public. DOS 3.1 was the problem, not handling semaphores correctly. We worked around that problem.) Anyway one night the controller asked me, "can you write a liability analysis report." Being a bit of a smartass (a common issue with younger, and some older, programmers) I responded, "Sure. What's a liability analysis report?" I was just a dumb 20 y.o. after all.

He told me and I wrote it. Then I nurse-maided the printer all night while dBase churned it out (about ten hours.) When I got back to NYC I rewrote it in Bascom which produced the same report in less than half an hour. So then I got chewed out by my boss. Why?

"Ken, we could charge them for that report and you just gave it to them for free."

They did offer me a job and even tried to marry me off to one of their office girls. Where are those offers now I ask? Instead they hired some blowhard that claimed he could do better for them than some 20 y.o. kid. His first act was to hire me as a consultant so I flew back to Ohio to explain to this jerk what I had done. This guy had no idea how client/server systems worked. Ethernet itself was a new idea with major companies (3Com and others) jockying at the time to get their standards established.

Another time I talked with Mondo, a really nice fat Mexican (hey, you know the stereotype and this guy fit it.) He was our customer's fleet manager (he and an old PC were the entire department.) He asked me if there was anyway to get a DOT report required by the government. "Sure. What's in a DOT report." Now I was an older and wiser smartass! He told me and I wrote it with the flexibility to meet all our customers customized requirements. I worked with our DB manager for the DB upgrades required (no freebee this time.) That report became the first thing our salesman showed to potential new customers and significantly increased our sales from that time forward. I wasn't supposed to talk directly with customers. We paid the big guys to do that. BTW, I was a programmer, not a tech. support guy, so when Mondo asked for help with another problem I told him he needed to get a newer computer. He got his boss to buy him one and the problem went away.

One engineering boss once called me uranium, "extremely valuable but hard to control." He told me to translate all of my estimates from weeks to double months. So instead of telling his boss I could get a job done in two weeks (giving myself padding even) I had to say four months. Then that boss let me do pretty much anything else I wanted to investigate (we had lots of hundred thousand to million dollar toys to play with industrial machines to study.)

I was the definition of self motivated and self initiative (the FAA once gave me an award saying that right before they restructured the department.) I even got a thanks but no thanks letter from the human resources department two weeks after I got another job. I learned early to bypass personnel and go directly to the guy that needed me, usually for a job they'd never even mentioned to personnel.

That company owned a Canadian gold mine and made a limited number of these six inch beryllium oxide souvenir rulers with real gold markings. I was the only person not from corporate that got one. It later got broken during my travels.

PCS and NextPOS were also good stories where I got a chance to do some amazing things working directly with customers (our distributors in the case of NextPOS which evolved into a much bigger company and changed their name.)

I've seen a lot and learned a lot, but never had a lot of self interest. I just wanted to understand things and help others. Now that I'm old and decrepit, those amazing days are over. But still... I'm not dead yet (Close maybe, but still wheezing... and I never smoked in my life. I refuse to wear a 'portable' defibrillator. Both my feet are wrapped in bandages three times a week. Every month the eye doctor pokes my eyeballs with needles. I do have a housekeeper and nurse that visits several times a week. I still drive... I ignore the screams and bumps. What? Dad drives in slow motion and Mom should.)

Three things drop me to the floor if I over exert myself (like walking three feet.) My blood pressure drops from over 200 to unmeasurably low. My sugar level has been good, but can also render me unconscious. I forget the third??? Usually this seems to happen at Walmart's for some reason?

I'm the nice guy that finishes last. Often astonishing some that just have to let me know. I've spent a lifetime politely listening to people explain things to me I'd learned in more depth 30 years before.

I gave up a full scholarship at Harvey Mudd because I was destroying the lives of 60 A student Asians (who thanks to me and the curve were now C and D students.) Later I found out I would have been just a year behind my high school buddy Paul, that went there.

When is the best time to make it? Without delay. You invest for the payoff. Any delay that isn't justified is a delay in the payoff. What justifies a delay? Not other investments. That's an issue before you choose an investment, not after. So what then? Due diligence (an appraisal to evaluate potential.)

What people see when they look at a thing differs with each person. If other people don't see what you do it can be difficult to get them to see it. When I look at mars I see it's future. I see development. But that only happens if other people with the resources see it as well. I'm nobody.

Others do see it. Perhaps not exactly as I do, but that's par for the course. Because they do, it will happen someday in some way. It could easily be the wrong way. People are self centered which is only natural. As a result, their vision reflects their way. But any vision that includes other people has to consider they each have their own differing visions. Why do people that can't plan their own lives think it perfectly ok to plan the lives of others?

I look at mars and see private ownership by millions of colonists. I see a developed world where individual freedom is allowed to flourish. Apparently this is a fantasy because everybody else's vision, if it includes mars at all, is of a prison world with one fascist dictator calling all the shots.

They don't see it that way of course. To them, central planning is just how it must be done and it's just silly to think otherwise. We now live in a time of soft sell fascism. Take care of yourself. They certainly plan to take care of you.

Monday, July 25, 2016

Did you know that Rodians had suction cups on the tips of their fingers? I played one in a band of good guys in a starwars RPG when I was a kid. First thing I did was steal all the money from the other members of my gang and bought our wookie a bowcaster. Wookie's are famously loyal and I thought of this as a good life insurance policy. Unfortunately, I died later in the game when I got between the wookie and an insane Jedi we rescued from a thousand year sleep in corbonite. This remembrance came after reading this.

What about warp speed? I was wondering about time. Doesn't FTL travel suggest arriving before you left? Time slows to zero at light speed and reverses at faster than light.

Sunday, July 24, 2016

...why I haven't made pea soup for over 3 decades. I'm shopping. I see a can of pea soup. I love pea soup. But I'm a cheapskate and I think, "Why pay the price of a can when bulk dry split peas cost so much less?" Because the companies that make canned pea soup have nuclear rocket scientist that know the exact incantation to get soup from a pea. Me I'm thinking, "Ya boil 'em in water. How hard can it be?"

First thing is they swell. I have just one cooking pot. I pour an entire bag of peas into the pot and add what should be enough water...

Now I go back to this coding problem I'm having. I'm trying to do trig functions on integers. It's not happening. I'm getting very strange results. Yes, I'm using radians as cos() and sin() require. I'm passing those double values. Never had a problem doing this in VB, but now I'm using a much less familiar language.

It isn't enough water. In order to make pea soup you have to boil them at low heat for about a generation, adding water every five second and still you will burn them. The peas themselves are not edible until you have reduced them to their constituent atoms. I may have to buy a new pot!

To be charitable, this debugger is Satan's spawn. Usable only if your goal is to get less work done. I haven't figured out how to set break points or even if I can. The docs are... not wonderful; so I'm googling for answers. There is no immediate mode where you type in an expression and out pops an answer. Even an internet browser can do that... which doesn't help much if my code doesn't work.

The peas smell good cooking.

I can't seem to be able to print results on a form. I have to add a graphic panel and send print to that instead... fine.

It's my housekeepers fault. She hid my Rotini somewhere. I'm out of sauce except this canned stuff they use to torture only the most evil criminal masterminds. The peas have been sitting in the cupboards for months. That's why they're there, they keep.

They are now, after some hours, turning into mush. This is good. That's what's suppose to happen. now if I can unmush my trig code...

Self-regulated ghettoes [within our country] have to be opened up and rigorously policed.

All mosques, which are effectively command centers, must be stringently investigated...

Every imam in the country should be thoroughly vetted...

Jihadi suspects clearly and unequivocally known to law enforcement agencies should not be so readily allowed.

[Those] who leave the country to fight alongside terrorist entities must not be repatriated, even if they are passport-holding citizens.

Muslim organizations with ties to terror-sponsoring organizations or that lobby for Sharia or for cultural and political influence must be disbanded and outlawed.

Islamic immigration must be drastically curtailed if not completely stopped. Muslim immigration must be thoroughly vetted.

Islam is at war with everyone else. There is no 'sunset clause' in their war. First we need to win the war with our own apologists for Islam. We win. They lose. Nothing else is acceptable.

We don't need to become a police state to do this. We do need officials, elected or not, to respect law and order and the citizens that support them. Those supporting Islam have chosen not to be citizens of this country, but instead citizens of a country intent on our destruction.

Thursday, July 21, 2016

I met my ex-wife in Istanbul January 2001 according to the visa in my old passport. Actually we met on the internet about a year earlier. She's a Russian-American now working in Sacramento for the state of California. At the moment she's visiting her mother and family in Crimea.

People are people pretty much anywhere. I met a lot of very friendly Turks (most working near the low budget hotel I could afford to stay at) just a stone's throw away from the Hagia Sophia. Especially at one restaurant where I got to know the owner pretty well. I wasn't there to talk politics but we did touch on the subject.

I also came across some dangerous people, but none that I couldn't deal with. Istanbul is a tourist city and they like American tourist money. Actually they like tourist money regardless of what part of the world it comes from... but they don't like Russians.

I have no knowledge of the factors in the recent coup attempt. Turkey is in a very strategically important geography as it has been throughout history. At one time they had a massive chain stretching between Asia and Europe to prevent sea passage during the days of cannon and castles.

They are in NATO, but are not entirely loyal to it. It's a good place for spies to trade secrets... except they really don't like Russians.

The people like Americans, but it's government is not it's people. We can say that about America itself these days. Laura Ingraham pointed out the problem when she called out the media to 'do it's job.'

I used to be a contendah. I did some amazing things with VB6 back in the day. I was always aware of it's flaws, but nothing allowed me to be more productive in writing business software. 12 years later and I still can't find anything to equal it. I had hopes back when I bought Delphi 5, but I just can't stomach Pascal. It makes me think it's the bastard love child of Fortran and Cobol. I've written exactly one program in each of those languages. I had an old girlfriend that used to say "she'd do anything once; twice if she liked it." I didn't like P, F or C. The other, just C, I did like; but it's not a complete language by itself. You have to use libraries to complete it and I've never liked any of those libraries. C++ is just worse.

I'm using PowerBASIC because of the resulting executable... not because I like the language. I bought EZGUI 5 recently to complement it, but it will not add anything that I need to the core language so it will have to wait for another project. I will not let anything distract me from getting this first project done. I even got an email from someone wanting to host my new domain (the competition for customers must be intense.) I told him to remind me in about four months which is about when I'll be ready for initial testing.

I was worried about how I'd do a database, but SQLitening seems up to the task. I won't have to write any host software (clarification in a moment) because I can code directly to it's service on a host. It's been stress tested using 500 bots without a hiccup, so it should be able to handle the load I intend to throw at it (and I have some control in limiting users per host if need be.) While I will not need to write a host. I will need to write an admin program that will interact with the service just like the clients will. That opens up the question of access security. I need to look into that.

I've downloaded just about every IDE on the net (seems like I'm not the only VB guy wanting what he once had.) None of them are more than a pretty face. One, Firefly, looks interesting but I can't find the PowerBASIC version it's supposed to have. I have the FreeBASIC version and it seems the best I've come across. I can't use FreeBASIC. It uses GCC to compile and the result is horrible compared to what I can produce with PB. The other PB, PureBasic, has some of the same flaws as FreeBASIC so it's out (both can do Linux, so may get another look... after my main focus: get a money making product in production within the year.)

I've found a useful, but not essential, tool for working with SQLite files. All I really need to do now is code (which is being interrupted for the next few days.) Then back to it.

Right now I'm just using one local SQL file. But my next job will be to simulate the host. When I actually do have a host running it will only require small changes to my code. The big changes will start with this simulation so I'm going to start that now (first thing in a few days when my interruption is over.)

Monday, July 18, 2016

I didn't do a thing about my software today other than contemplation, but that's not such a bad thing. I did do a search for some royalty free artwork, but I don't count that.

One day when I was a kid I was sitting at my computer , fingers on the keyboard, motionless, not moving a muscle for quite a while when one of my bosses came out of his office... looked at me and said, "stop thinking and start working." I was a computer programmer. Thinking WAS my work.

Anyway I continued to think with the added consideration of how I might include this boss in my process which lead me to some question I thought he might be helpful to me in answering. So I got up and went to his office. What work was he doing? A crossword puzzle! You should have seen my self control in not laughing in his face.

The guy was one of four partners in the publishing business. He really didn't know anything about the circulation fulfillment business or data processing. He and his partners proved that when they fired essential people (like the black, third shift computer operator.) I only mention he was black because his firing clearly was racially motivated. He was the most productive of our three operators and it turned out the only one maintaining backups which stopped when he was terminated. That was a bad decision that bit them within a few short months when it became critical.

I can't say he knew much about publishing either. Penny stock news was one of their publications which was just made up blather but it provided them some income. The thing I learned during that time was that paid subscriptions wasn't about income from subscribers, it was about income from advertisers with two national auditing associations determining a publication value (not in quality of writing but in quantity of eyeballs.)

I used that education later in life when I doubled my young millionaire friend's income with just one afternoon's work by better putting our customers together with the right distributors. He later rewrote my work to include it in his support software (it didn't do the job any better, but like many programmers, they really don't trust code they haven't played with themselves.) We had about 300 distributors but only about ten of them were really productive and only one of those had the most business by a good margin (and us the least margin in the way it was structured. He even branded the product in such a way that customers were trying to decide between our product and our product by another distributor!) I tried to point out to my young boss (early twenties) that most of our potential income would come from our middle tier distributors if we gave them more support which we could have and they were begging for. At least my ex-wife got a nice luxury car out of it.

Sunday, July 17, 2016

I'd already started to write a crude version of this. Now I don't have to. It had me confused and feeling stupid at first, but now I understand how to use it. I was just creating my DBs in code and will continue that in my final program. But having a tool like this is very useful during development.

I see they've stress tested SQLitening with 500 bots hitting it at once and it didn't miss a beat. That should translate to about 5,000 to 10,000 users per host in my scenario. I can be a success even if much less. Now back to work. Grindstone... nose!

But better if you can read them. Win 8.1 can't read .CHM files. I know there is supposed to be a registry fix but I found something that works for me. 64bit portable was my choice which I manually copied over into the 64 executables folder, then associated with the CHM file type. Works like a charm.

The reason I needed this is that one important document with SQLitening is a CHM file. Now that I can read it I understand why SQL code that doesn't specify type works. Also when I set up my online server (a few months from now) I'll actually have an explanation of how. Amazing how that helps.

Thursday, July 14, 2016

Don't make this mistake: I typed a .com name into the browser address bar a few days ago just to see if it was available. It was so I went to register it at godaddy today and it no longer was. Looking at the page, it's obvious somebody just made the page. So I registered a shorter version of the name. I kept getting not available until I got excited when one was, only to find out... sure it's available... for $45k!!!

I can't believe what some people will do! So tomorrow I've got some good news for my partner... we have a domain, for the next two years at least. I'm really happy with the code performance I'm getting. Reading thousands of records and displaying them graphically... if you blink you miss it. I also bought a library today that I may use in future products (not this first one.)

I may not use that domain for quite a while yet, but it's good to have it. I've been needing a new email address for years. A few years back somebody broke into my email account so I changed to a longer password. I haven't had a problem since but I still get email meant for him. Apparently he's a gay arab in to filipinos? The good news is people searching for information about me get info about him. It sort of protects my identity (not that anyone would want to steal mine other than to hide their own. Years of unpaid and partly paid hospital bills guarantee I won't be buying anything on credit.

Perhaps that will change when I have an income? Until then, embrace the ramen!

Tuesday, July 12, 2016

I added 24 forms to my project yesterday and today I've been testing SQL performance. In order to get the hot performance I have to submit inserts in batches... one big string with semicolon separation. I can do that on the server side as well. It means I have to change some habits, refactor, etc.

I'm very happy. I really enjoy coding when things are moving along.

Update:

I think I'll celebrate by getting some sleep tonight! Yahoo! When coded right you can add or retrieve 1000's of records in a blink. It took a while for me to figure out how. GUI updates take most of the time but I've got ideas about that too.

The only bad news is the DLL I'm calling calls another which I don't have the source for... but I can live with that.

Sunday, July 10, 2016

It works in local mode and it's fast. I created a DB and inserted 50,000 records in less than 2 secs. I haven't got the server side working yet, but I can proceed with development in local mode for now.

In the words of Joe Biden, "this is a big f&&%g deal!"

Eventually I will get the server side working and statically link the DLL to my client code. I just woke up thinking it was morning but it's still evening. My brain seems to have been working the problem while I was asleep. I've got a 7am appointment in town, so I'd better try to get back to sleep.

I got a simple menu window from the Phoenix IDE demo to compile. Rather than one file that VB would produce, it produces seven including a resource file I couldn't get from the demo. Not ideal, but I can work with it. One of the WinAPI files that came with the PBW10 compiler needed tweaking but no big deal. I don't really like the code the IDE produces, but it works. I'll probably just use it to draw GUI's then abandon it to hand code after that. If that's the case they give me very little incentive to buy it since I won't be able to maintain my project with it. So I get to continue to eat. Yay!

What I could do is write a VB to PowerBASIC file converter and just maintain everything in VB? But I'm not going to get sidetracked by that. My goal is to make money. Anything not contributing to that goal is going to be put on the back burner.

So now the remaining hurdles are implementing UDP and SQL. The SQL server will use two circular message queues (high and low priority.) I'll only be retrieving as little data as possible from the host and only as needed. Static data will be copied to local DBs. UDP will be the easy part and I can define data packets as I develop the rest of my code. The only demo code for UDP I have is not multiuser but I don't expect that to be a big deal. Soon this is going to get fun once the foundation is tested and working. I can put off getting my domain until I'm ready to deploy. The last domain I bought expired before I used it ;-P

Saturday, July 9, 2016

Monday I'm going to buy this $160 IDE (more than the cost of my PowerBASIC compiler) from a Canadian website that doesn't appear to have any activity for about two years and offers no contact information.

Wish me well.

Also I've got a Btree program that doesn't install. Although my understanding is if I can get it installed on an older version of windows I can just copy the files over and that will work.

I really need this IDE. I don't know if it has a drill down function (probably not and sorely missed) but everything else in the demo looks pretty good. It will save me years of not having to search for how to do basic things so I can focus just on my code.

Update:

Just downloaded SQLitening 1.7 written in PowerBASIC and includes source. They claim it's fast. I haven't got the demos working but if it works it will be much better than working with Btree. Just a single DB file to work with instead of auxiliary index files. Since I have the source I can create static link libraries instead of DLL's removing that support issue. On the server DLL's are fine, but not for clients when I don't want the support headache.

Update : 4 am

I'm digging deeper into the IDE demo and believe I'm detecting some problems. The demo doesn't allow me to save code to do test compiles... except I can cut and paste to accomplish the same thing. The problem is it doesn't appear to create correct code. It creates individual callback routines for each control attempting to imitate VB. However it doesn't seem to produce form creation code or the callback function for forms either. I could work around that (but should not have to.) Then there's new menu defaults which are fine if those are the one's you want, but deleting a menu item leaves the orphaned event code in your file. That could be corrected if I can remove the defaults other than FILE/EXIT which would be fine. With no contact info... well they do have a forum. I'll try that.

Update:

I don't expect PowerBASIC will come out with a version for Linux (although they may?) so my choice to use PB was not an easy one. It's not a great tool to work in. VB6 spoiled me but it also hid things that shouldn't have been. The end product with VB6 was always a compromise but it had the SQL performance (w/ ADO) that kept my customers satisfied with my work. PB produces tight, fast code which was the deciding factor for me. I'm going to keep working with the IDE demo because I found it was splitting code between files and may work after all. I'd just like to confirm that before I go a few weeks without food? It really would be worth such a sacrifice if it does work.

Different languages steal ideas from one another and they are not always good ideas. I never liked C header files because it meant you had to look in two different places to know how a thing might work (or not work if you change one without the other.) Basic steals that with it's include files. Declaring a function makes sense for an outside DLL call but no sense for the purpose it is otherwise used for... languages whose identifiers are sequence dependent. Functions should be atomic with no sequence dependency (something the OpenEuphoria crowd is belatedly discovering.) Includes, preprocessors and macros are all mistakes for similar reasons. They were solutions whose time has expired. A programmer needs to be humble and let the computer do the work it is better suited for (leaving the programmer to do the things a computer can't.) Namespaces seems like a really cool idea, but again is a mistake. It's an attempt to tighten scope but in a mistaken way because again it makes things less atomic. If you have file scope, namespaces become superfluous. You should never have to look beyond the passed in parameters to figure out what a function does. Hunting down code is a waste of the programmers time and a lack of humility by relying on human memory where it isn't required. Being able to drill down to called functions (two clicks in VB) is also a great time saver for the humble programmer. I could have never handled well over a million lines of code by myself without it.

I ordered dried and canned food from jet.com last month. Well, and a jar of pickles which had its own bubble wrap suit of armor. One of the things I got was a case of noodles in Styrofoam cups. What a discovery... boil water (even I can do that) pour it into the cup and wait a few minutes. Actually simpler than ramen noodles because there's nothing to drain.

Of course I'm supposed to check the salt content which is listed on the part of the packaging that I toss away (nothing like that is printed on the cup) which turns out to have 1800 mg of sodium. My doctor has me on 1700mg or less a day. So that case will last me a long time!

Friday, July 8, 2016

I just spent a day creating a form in PowerBASIC that would have taken me about 30 minutes in VB6. I've got about 30 task like that to do which makes this about a six month project. Of course, most of that time was figuring out the strange way PB works with controls. Then I'll have a whole lot of other things left to do before I can publish it. The good news is the end result should be small and fast. That's one thing PB does do well. Installation will be... download the file... run the file.

Thursday, July 7, 2016

At 3AM. That's how ya know I'm coding. Did ya catch the error in my last post? The midpoint may only change half a record for an addition or deletion, but that could potentially mean updating every record in the database. Can't have that. For the link one jump forward or back that's just three writes. But for the midpoint links that's not gonna work. So I've devised an evil plan. I will adjust the current link to those of the second link forward. Adjusting my links 3/4 forward or back and only update 3 or 4 links either side. Over time all the links will adjust to the growth in the database even though some links will fall short of half and others will overshoot. No sleep and I'm still this brilliant! Who'da thunk it? Well, if it works?

Speaking of pizza. Eating it cold for breakfast is how you find out if it really was good. Not so much in this town. I like the owners, but nobody in town really knows how to make a great pizza. I had friends in Seattle that used to rave about some of their pizza places, but putting exotic stuff on a pizza is not what makes a good pie. A plain cheese pizza almost anywhere in Brooklyn, NY beats almost anything any place else. In NYC they did sometimes try to get a little fancier. I once had a ricotta and broccoli pie that was pretty good, but the only thing they did fancy in Brooklyn was stretch the dough.

How many links forward or back should I update? I'm thinking log10(db size, that's record count, not bytes) should be about right?

What about records marked deleted? I can still use those links that will still exist. If a new record had been updated there I can follow it's link (whichever side I'm following to the first record with a usable link.) For a record marked deleted a one direction link can be put in the data field so we don't overwrite the still usable old links.

One last point. 32bit links will be large enough and 16 bit counts will do the trick so that's about 18 bytes of overhead per record. However, strings will store a 4 bytes pointer to records that have no links at all. So 40 bytes per record should be enough for 200 bytes of string data (two bytes reserved per record.) Wait, actually string records could be a linked lists (unrelated to those other links so I really have almost unlimited space up to 160 billion bytes of data! If I count by record size rather than actual byte position.)

Wednesday, July 6, 2016

Choices you make at the beginning of a project can haunt you for years and even decades. I was a really good VB6 programmer, but Microsoft decided to kill it for dotNET. At the time everyone said "go to Java young man!" but of all the flavors I looked into, none came close to the productive level or code performance of VB6. I thought C was my only option, but I never liked C++... or header files or MFC or the list goes on.

I'd still like to write my own language, but I've got a higher priority and need to stay focused. I need to make money by writing a commercially viable product and not being distracted by anything else.

I own two of the top three compilers that tried to take over the VB's crown. The third just didn't have the code performance even though it had the best code environment. The first one I bought about a decade ago, PowerBASIC was such an ugly language I just filed it away and didn't bother with it. I have an autographed copy of the language reference signed by Bob Zale who died a few years back.

Later I bought PureBasic which includes the kitchen sink. Then found out it's SQL performance was ridiculously slow. So at this point a few years back I just kind of gave up. But something keeps nagging me not to go gently into that good night. So this is my version of raging against the dying of the light (and the light is dying. I can't really believe my physical health as I one finger type this.)

So the Win32API references I finally got together all have one thing in common. They tell you the size of the parameters but leave out that slightly important info of what they are. So I ordered this book. Note it's the 5th edition. The latest is the 6th which comes in two parts and the second doesn't seem to be available yet. After ordering it I gave some more thought to my choice of language. I can compile Euphoria with GCC. I also thought for later in my project I could use GAS to avoid reinventing another wheel. I could use Euphoria's EDS for both my client and server databases. I'm planning to use UDP messaging because I can deal with lost packages but need the speed. I also plan to do some peer to peer where I can bypass the host.

But I changed my mind.

I could try to find someone else's DB backend but I don't need to. I can just open a binary file in PowerBASIC and get blazingly fast speed. I'll be mostly reading static data. I'll have some circular message queues that just require two reads. I'll only have two data types (integers and fixed length strings) and the integers can represent fixed point floats. I'm writing my database editor now, which because of my lack of experience with PB should take me about a week (it will look ugly, but I'm the only one that will ever use it.) I'm thinking I can have the host continuously update midpoint links. Adding or deleting will only change the links by half a record which won't affect performance at all.

I can do the same thing with clients but only have to do those about a thousandth or so as often (there will be some start up cost when a user comes back on, but I think that's manageable.) Doing is how I will find out. I really have nothing to lose.

So what am I writing? I plan to make money by giving it away for free (remember AOL?) That's when you'll find out.

Tuesday, July 5, 2016

My egg foo young from lunch was too much, so I left it to snack on later. Chinese food doesn't sit well.

Anyway I got to thinking about my idea to put all OS dependencies in one file, but decided to split it in two because win32 has hundreds of possible calls and breaking those out into a separate file allows code reuse on future projects.

Euphoria is a bit manic. When it generates an error file it sometimes points you in the wrong direction. I had implemented LoadIcon and LoadCursor and they were working fine. Then I added CreateWindow and LoadIcon blew up. Wrong count of parameters it said which I hadn't changed. So I stubbed it out, after which it started complaining about LoadCursor, so I stubbed that out as well.

Then I was shocked that it compiled and seemed to run fine. That should not have happened. Somehow I'm sure I'm corrupting memory somewhere but haven't a clue how I'm going to track that down.

I'm not sure about parameter passing from Euphoria to C either. Euphoria has two routines that work together but take their parameters in reverse order. To pass strings to C you have to allocate memory and pass a pointer. The thing is I'm not confident I'm passing the right size parameters. Everything is working, but I'm flying blind at the moment. Euphoria has a thing called a sequence which is not a contiguous array. I understand it's referenced by a pointer, but how does C know anything about the structure of a sequence? It cant, but passing them as parameters seems to work fine. I'm going to have to dig a bit into the calling functions so I can better understand what's going on.

I'm shocked to discover references I used back when I was a working programmer are no longer online. I've got Petzold in PowerBASIC and everything else in C (I do not like C++) which I then have to translate into Euphoria which has documentation that doesn't keep up with the changes in the development of the language. I want a function dictionary with snippets and something definitive on type sizes. The information just isn't in one place as it should be. I downloaded win32.hlp and win32.chm but neither of them gave me access to their info! Those were both large downloads but appear empty when I tried to reference them. The help file was particularly outragious since it did load but wouldn't show me anything. That means Microsoft intentionally made help files obsolete starting with windows 8. How can I know that? Because the help files do load, they just don't work beyond that. So Microsoft removed the functioning code from the OS and intentionally replaced it.

I've got an early appointment with my wound care guy in about 5 hours from now, so I'd better get some sleep.

Update: Well, I got a refreshing 3 hours of sleep last night. I'm good to go. Across the street is a field filled with donkeys and llamas. The donkeys think they are roosters. They put on quite a racket just before dawn. I've got another two hours until my appointment which only takes about 15 minutes, then I'm back to coding. Right now it's a bit of drudgery, but as I get the foundation built the rest will be a lot more fun.

Sunday, July 3, 2016

I'm making progress on the code I'm working on. Outwardly the result hasn't changed from where I started yesterday, but internally I've cleaned up the code and removed a lot of dependencies. Considering I'm hampered by not knowing where most functions were defined I've had a pretty productive day. I've moved all my OS dependencies into one file so when the day comes for my Linux version I only have to replace that one file. Time to sleep.

Code rot is a misnomer. Code doesn't usually change itself. What happens is some idiot wants to make things 'better' and doesn't consider how their changes might affect other software that depends on how the legacy code worked. I was spoiled. When I started as a programmer in NYC, the VP that hired me had been with the company since it's founding 20 years earlier. Some of his code continued to work since that founding despite many generations of hardware upgrades (Univac mainframes that were code compatible with IBM mainframes.)

So when I got a copy of the first Euphoria program I wrote (it's awful, but it worked then) from an online archive, because I wanted to grab some functionality I'd written in it, I expected it to run. Which it didn't of course. Dependencies had been altered. This is one of the reasons I may write my own language and IDE. First, because I can control it over the years and second, because the tools to make coding fun in my terms just don't exist (I've been waiting so long I'm now officially obsolete.) Today I found FASM has an IDE and source (windows defender wouldn't let me download it. So I bypassed it. Test compiles work.) I don't know if I'll use FASM, GAS or some other assembler (bought MASM about 30 years ago. I bought Lattice C around the same time.) I'm not an assembly programmer and the references I've found are inconsistent and full of holes, but I think that's how I must move forward. Eventually I'll write the new language in itself and having a machine language version will give me something with which to compare it.

PowerBASIC, another compiler I bought years ago, has some good reference material I'm going through. Ironically, in order to have just one language to write my code in I have to have an understanding of half a dozen others! Back in the 80s I remember asking myself, in order to do this thing in dBase, how would I do it in 6502 assembler? That worked! The 6502 was such a sweet cpu to write code for. I wrote an assembler/disassembler for it in BASIC which got me my first programming job in NYC (writing BAL on that Univac.)

Coding can be such a pain. Not figuring out algorithms (that's the fun part) but getting all the plumbing right without good references. I just know that once I've got things working user32.dll and gdi32.dll will disappear breaking my code again. That will not affect my Linux version of course. I will have only one file different between the two versions.

Friday, July 1, 2016

...lest we forget what has happened to many "friends" and associates of Bill and Hillary Clinton.
1- James McDougal - Convicted Whitewater partner of the Clintons who died of an apparent heart attack, while in solitary confinement. He was a key witness in Ken Starr's investigation.
2 - Mary Mahoney - A former White House intern was murdered July 1997 at a Starbucks Coffee Shop in Georgetown (Washington, D. C.). The murder happened just after she was to go public with her story of sexual harassment by Clinton in the White House.
3 - Vince Foster - Former White House Councilor, and colleague of Hillary Clinton at Little Rock's Rose Law Firm. Died of a gunshot wound to the head, ruled a suicide. (He was about to testify against Hillary related to the records she refused to turn over to congress.) Was reported to have been having an affair with Hillary.
4 - Ron Brown - Secretary of Commerce and former DNC Chairman. Reported to have died by impact in a plane crash. A pathologist close to the investigation reported that there was a hole in the top of Brown's skull resembling a gunshot wound. At the time of his death Brown was being investigated, and spoke publicly of his willingness to cut a deal with prosecutors. The rest of the people on the plane also died. A few days later the Air Traffic controller committed suicide.
5 - C. Victor Raiser, II - Raiser, a major player in the Clinton fund raising organization died in a private plane crash in July 1992.
6 - Paul Tulley - Democratic National Committee Political Director found dead in a hotel room in Little Rock on September 1992. Described by Clinton as a "dear friend and trusted advisor".
7 - Ed Willey - Clinton fundraiser, found dead November 1993 deep in the woods in VA of a gunshot wound to the head. Ruled a suicide. Ed Willey died on the same day His wife Kathleen Willey claimed Bill Clinton groped her in the oval office in the White House. Ed Willey was involved in several Clinton fund raising events.
8 - Jerry Parks - Head of Clinton's gubernatorial security team in Little Rock ... Gunned down in his car at a deserted intersection outside Little Rock. Park's son said his father was building a dossier on Clinton. He allegedly threatened to reveal this information. After he died the files were mysteriously removed from his house.
9 - James Bunch - Died from a gunshot suicide. It was reported that he had a "Black Book" of people which contained names of influential people who visited Prostitutes in Texas and Arkansas
10 - James Wilson - Was found dead in May 1993 from an apparent hanging suicide. He was reported to have ties to the Clintons' Whitewater deals.
11 - Kathy Ferguson - Ex-wife of Arkansas Trooper Danny Ferguson, was found dead in May 1994, in her living room with a gunshot to her head. It was ruled a suicide even though there were several packed suitcases, as if she were going somewhere. Danny Ferguson was a co-defendant along with Bill Clinton in the Paula Jones Lawsuit, and Kathy Ferguson was a possible corroborating witness for Paula Jones.
12 - Bill Shelton - Arkansas State Trooper and fiancée of Kathy Ferguson. Critical of the suicide ruling of his fiancée, he was found dead in June, 1994 of a gunshot wound also ruled a suicide at the grave site of his fiancée.
13 - Gandy Baugh - Attorney for Clinton's friend Dan Lassater, died by jumping out a window of a tall building January, 1994. His client, Dan Lassater, was a convicted drug distributor.
14 - Florence Martin - Accountant & sub-contractor for the CIA, was related to the Barry Seal, Mena, Arkansas Airport drug smuggling case. He died of three gunshot Wounds.
15 - Suzanne Coleman - Reportedly had an affair with Clinton when he was Arkansas Attorney General. Died Of a gunshot wound to the back of the head, ruled a Suicide. Was pregnant at the time of her death.
16 - Paula Grober - Clinton's speech interpreter for the deaf from 1978 until her death December 9,1992. She died in a one car accident.
17 - Danny Casolaro - Investigative reporter who was Investigating the Mean Airport and Arkansas Development Finance Authority. He slit his wrists, apparently, in the middle of his investigation.
18 - Paul Wilcher - Attorney investigating corruption at Mean Airport with Casolaro and the 1980 "October Surprise" was found dead on a toilet June 22, 1993, in his Washington DC apartment. Had delivered a report to Janet Reno 3 weeks before his death. (May have died of poison)
19 - Jon Parnell Walker - Whitewater investigator for Resolution Trust Corp. Jumped to his death from his Arlington, Virginia apartment balcony August 15,1993. He was investigating the Morgan Guaranty scandal.
20 - Barbara Wise - Commerce Department staffer. Worked closely with Ron Brown and John Huang. Cause of death unknown. Died November 29, 1996. Her bruised, nude body was found locked in her office at the Department of Commerce.
21 - Charles Meissner - Assistant Secretary of Commerce who gave John Huang special security clearance, died shortly thereafter in a small plane crash.
22 - Dr. Stanley Heard - Chairman of the National Chiropractic Health Care Advisory Committee died with his attorney Steve Dickson in a small plane crash. Dr. Heard, in addition to serving on Clinton 's advisory council personally treated Clinton's mother, stepfather and Brother.
23 - Barry Seal - Drug running TWA pilot out of Mean Arkansas, death was no accident.
24 - Johnny Lawhorn, Jr. - Mechanic, found a check made out to Bill Clinton in the trunk of a car left at his repair shop. He was found dead after his car had hit a utility pole.
25 - Stanley Huggins - Investigated Madison Guaranty. His death was a purported suicide and his report was never released.
26 - Hershel Friday - Attorney and Clinton fundraiser died March 1, 1994, when his plane exploded.
27 - Kevin Ives & Don Henry - Known as "The boys on the track" case. Reports say the two boys may have stumbled upon the Mean Arkansas airport drug operation. The initial report of death said their deaths were due to falling asleep on railroad tracks and being run over. Later autopsy reports stated that the 2 boys had been slain before being placed on the tracks. Many linked to the case died before their testimony could come before a Grand Jury.
THE FOLLOWING PERSONS HAD INFORMATION ON THE IVES/HENRY CASE:
28 - Keith Coney - Died when his motorcycle slammed into the back of a truck, 7/88.
29 - Keith McMaskle - Died, stabbed 113 times, Nov 1988
30 - Gregory Collins - Died from a gunshot wound January 1989.
31 - Jeff Rhodes - He was shot, mutilated and found burned in a trash dump in April 1989. (Coroner ruled death due to suicide)
32 - James Milan - Found decapitated. However, the Coroner ruled his death was due to natural causes"?
33 - Jordan Kettleson - Was found shot to death in the front seat of his pickup truck in June 1990.
34 - Richard Winters - A suspect in the Ives/Henry deaths. He was killed in a set-up robbery July 1989.
THE FOLLOWING CLINTON PERSONAL BODYGUARDS ALL DIED OF MYSTERIOUS CAUSES OR SUICIDE
36 - Major William S. Barkley, Jr.
37 - Captain Scott J . Reynolds
38 - Sgt. Brian Hanley