Hope for the Camel’s Second Hump

Today I offer some advice for those currently staring down the barrel of failing midterm grades for CS and Engineering students.

Episode 7 – XLS, XLSX What is Difference?

Today I cover a small “oops” from the UK health center, and extend some thoughts on its relationship to “Real Programming”.

Episode 3 – To College or not to College?

For new and aspiring developers – in this episode I answer the #1 question asked from future coders – should I go to college? Pros and Cons of a college degree and the University system.

Contents: The Cold Truth of Job Seeking. Beware of For-Profit systems. Selecting a Degree. The actual meaning of a Computer Science degree.

Episode 2 – The Decline of Usenet

We return to the early 80s and 90s to discuss the rise of consumer access to Usenet and the following decline of the service and its rise to the ranks of the undead.

Contents:

  • Show introduction
  • Merging of networks
  • SPAM, SPAM, more SPAM
  • A brief analysis of the “Decline”

Resources:

Sources:

Credits:

  • Music by Audionautix.com – Creative Commons licensed music and commercial options available.

On COVID Research…

Over the past day, I’ve seen multiple articles (three, four, five?) from different people posted on COVID. Generally, posted with an agenda of either orange-man-bad or lizard-people-left-wing-libral-conspiracy. I’m not gonna get into specifics of these debates. I try VERY hard to keep my life positive and mostly non-political. Personally, I’m trying to wear a mask out in public, keep hand sanitizer in the car, and am actively avoiding any/all social situations. Biggest risk I’m taking these days is occasional to-go food and potentially get a beard trim from my barber after the 18th – which I’m only considering because I know how fastidious he is.

Instead, I’d like to talk about basic “Scientific” literacy. Long standing crisis like COVID move too slow for the media to cover on a 24-hour basis. Research takes months or years if done right. Building a simulation or model isn’t like an episode of CSI or Numb3rs. If you see an article talking about “new study says” or “study claims” or generally anything “study” related – take it with a grain of salt. A number of researches are rushing to publish “findings” right now, and the news will happily take those that match THEIR viewpoint, dress them up, and push them as some sort of huge revelation. They aren’t. Don’t confuse the media’s search for content as in-the-field development.

Coming from the standpoint as someone that’s actively developed forecasting models and lately done lots of cloud processing with spatial data: models are hard. They are also limited. I’ve seen multiple recent posts on conflicting models saying conflicting things from preprint papers waiting to be peer reviewed and published. Without thorough review of the collected data, methodology, and analysis these “reports” are near worthless. In data science, epidemiology has had something of a gnarly reputation as a weak science: poor documentation of method, lack of reproducible results, significant examples of p-hacking, poorly documented data sources, “studies” consisting of largely anecdotal data or retrospective with significant bias, etc… Once we get out of today’s weeds, I’m hopeful that we’ll see some better development with increased interest and more realization of the importance of the field. But – if I’m objective, at this point, the “models” have been mediocre at best.

TL;DR – Please, please, PLEASE, stop shouting at each-other over SCIENTIST SAYS THING. We all have our own risk tolerance and concern over relatives or the economy. Chill, sit down, and don’t be a douche. Realize that personal space is now 6′ for a lot of us. You’re gonna see people wearing masks – they may even be Orange-Man voters. If someone isn’t wearing a mask – maybe they have a respiratory issue or some reason they can’t / aren’t. If you favor the shutdown or reopen – realize there are some REALLY good points on both sides and that it’s OK to disagree.

C++ Needs a New GUI Framework

The landscape of GUI C++ development is pain – native Windows gets third tier support from Microsoft, and Android actively discourages native API. Linux is better with Qt and GTK, but GTK on Windows is rough. My go to choice for years has been Qt.

Lately though, it seems Trolltech Nokia Digia The Qt Company has an active dislike of their users. I’ve brought up the idea of Qt at my day job, but the word is they won’t cut a deal amenable to requirements. So we mush on. There’s lots of homebrew garbage out there – especially if you start looking at widget sets on top of Unity. Hey, why not yet another CSS Browser?

In the end – maybe it’s just that the demand for native code isn’t there. Web front-ends are all the rage, and electron apps can do wonders. Why not take a gig of ram for a text editor and chat client – RAM is cheap these days. Still, there’s something hugely missing in development work when you start looking at the interface between C++ and whatever Javascript engine du jour you’ll be running on.

Qt is almost there for so much. Unless you want to make money or distribute an app with a GPLv3 incompatible license or environment. Given Microsoft’s amazing collection of freeware tools, you might expect a license for commercial development to be reasonable. You’d be wrong. The keepers of Qt licensing want $5k+ per developer. The community shouted. They offered a ‘small business’ package for anyone with less than $100k revenue. The community shouted again. Now, they’ve upped that to $250k. Just don’t look at the fine print if you want to distribute embedded works.

What would make a nice GUI library?

  • Some sort of DOM / Canvas model that is intuitive and easily interacts with C++
  • Scripting support with C++ tie-in
  • Stable API that plays well with “standard” C++

Hit those buttons, don’t charge me an arm and a leg, preferable be open source – GPL + commercial would be ok by me, and we’ll talk. Maybe it’s time for a Motif comeback, I miss you X11 days.

Old Man Js 1: Too Many Tools

As I dive more into web programming in an effort to become stronger at the front-end, I figure I’ll drop some notes for any other enterprising embedded / server programmers wanting to join in.

Plodding along on the internet, I’m rapidly discovering that the choice of libraries seems to expose on to an endless array of different methods of building / compiling your web-app. PHP seems much more straightforward in comparison. The first, and most confusing element to me was ‘nodejs’ itself.

My backend is all Python, so what’s with requiring this NodeJS Javascript web server? It’s not a web server, it’s a scripting environment. Well, that makes a bit more sense.

Ok, but why do I need a Javascript environment to use these toolkits? Well, the utilities to compile JS are written for that environment.

Wait, I thought JS was interpreted by the browser? True, but you want something to maintain all the dependencies and automate things like minification and creating map files.

5 minutes in to reading a basic tutorial on several different frameworks, I’ve already had to discover new terminology for nodejs / npm. And, at this point, I haven’t even started down the alphabet soup of different environments:

  • Yarn vs. Npm vs. Bower – Ok, we’ve got multiple competing package managers here to get going… And each has it’s own quirks. Maybe the best answer is to stick with npm since it came with the environment? Crud, looks like these tutorials use yarn.
  • Gulp vs. Grunt. – Ok, so now we start to discover that inside this JS environment are apparently new environments for running tasks… Ok, not too much a problem.
  • Webpack vs. Browserify – Well, these are what I installed this node thing for anyway aren’t they? What am I getting here?

Annoyingly, each JS developer has their own ‘special sauce’ combination of components that yield something for the back-end developer. The larger the application (and the more 3rd party utilities one brings in), the more likely it seems one will need to go ‘off script’ from recommended configurations provided. That doesn’t even begin to raise the shear number of potential library combinations that may (or may not) be tested.

I’m trying to like this Javascript thing, but it’s really reminding of DLL hell days in windows.

T-7 weeks

Looks like I have a job. I received the job offer on Tuesday, accepted on Wednesday, and start on Monday. So, why do I say T-7 weeks? Well, put simply, in my current living situation I can not really have access to a linux box. In 7 weeks, I will be moving into a place of my own, complete with a working network, and so forth. So, to be fair, it might be a bit more than that if I take into account cable setup, getting the lease signed, moving time… But basically, I need 3 paychecks to recover from the enormous financial toll moving with less than a weeks notice and no job prospects took. Oddly enough, now that it looks like I found something, I’m getting a lot of calls and emails about interviews. The job I’m taking is good all around: good location, good money, and really nice people. Only downside is that they are a Windows based shop. (But, that just really means more job security for me now that I think about it, especially if they ever decide to move platforms.)

So, right now I have 7 weeks abouts until I can do a linux install and start hacking stuff again. I have all sorts of cool project ideas, and things I want to get going especially some thoughts on conary stuff I’ve been thinking about, but I have no way of doing any of it right now. So, I’m stuck writing them in text files and waiting for some time.

I have had a few people ask why I moved with such short notice, the short answer is family issues. The long answer is that I left the religion associated with my family and felt the need to leave the area as well as my family is somewhat well known with that particular group. I’m not going to go further into this on this blog, as it is on some planets and I don’t want to upset anyone. Let just say it’s hard to go to places and keep running into people that know about how you “left” and want to “save you”. I make no judgements anymore about people of any religious groups – I really don’t think anyone has things right, so why quibble?

So, now I am working on a shopping list and debating how to handle the big issue of furnishing an apartment and starting my life over, (but now with a job!). I’m probably going to finance a big chunk o’ stuff if I can find a good deal such that I don’t have to pay interest. It’s a rather interesting question of which is better: having things now, or buying cheap stuff to last a bit and piecing together nice stuff as you go. I think I could come up with some really good mathmatical arguments for going to a local furniture store and financing the whole thing with one of those 0% interest no payments for 12 months deals… Basically, there is no way around the need for furniture, so I have to spend some money, and I’d like good furniture later, so the question becomes if any interest I had to pay on new financed furniture would outweight the cost of buying old furniture, getting new furniture and selling/donating the old, and all the transportation involved. Needless to say, after worrying about being homeless for a short period, these are nice problems to have. The only thing I am currently 100% sure I’m going to purchase is a full size weighted-key piano/keyboard – mostly because of the other major piece of news I have….

In addition to a “day job”, I am now going to be performing as a pit musician in a production of Nunsense, a musical comedy. I’ve been to several rehearsels so far to hear the ladies sing, and the pit rehearsals start in full scale on Monday as well… Going to be a long day Monday, standard 8-5 job and then from 7-11 I’m Mr. Musician. Slightly scared that I haven’t seen the music yet, I really hope my site reading skills are up to par. The play starts at the beginning of August and runs to the end of the month. This will be the first time I’ve performed for a group in a non-religious setting. Needless to say, since I am moving out of the garage(literally), I’ll need a piano to keep practicing for future plays.

I also asked the owner of the theatre if I could try my hand at bartending, and that is going very interestingly. I bartend now for a local comedy club on Thursday nights, under the direct supervision of an older bartender. You learn more about alcohol in a few minutes mixing drinks than in a lifetime of reading… Favorite drinks in order are currently: Long Island Ice Tea, Georgia Peach, Captain and Coke. It’s also interesting to learn just how hidden the taste of alcohol can be by some of the different fruit juices. For instance, even though it’s only moderately alcoholic (I’d say around 10% on strong mix), I can’t really taste it in a Malibu and Pineapple. I guess the lesson here is to be careful of fruit-juice drinks in bars. Anyway, if any of my friends reading this have any plans of being around during a weekend in August, give me a shout and I’ll either get you in to see Nunsense or buy you a drink at the comedy club. Funny enough, I met my contact that told me about the career opportunity I recently landed with through working there… Funny how life works.

Finally got my own weblog

This time I’m doing things right, that means among other things, using real software to do the webloging thing. I started this mostly to appease several people that would like to see how I’m doing from time to time. Also, I’ve started this so people can keep tabs on my work on Specifix Linux, specifically the state of the KDE packages – my nemesis!

So, what have I been up to you ask? First, trying to get a new job. I desperately need one that lets me work more than 10 hours a week. Even a second job that let’s me work a couple hours a week would be great right now. As I’m sure most college students know, things can get very hairy when you’re going to school, trying to maintain a car, etc…

In other news, I got a puppy! He’s more than a little active. He’s a beagle and everyone that has met him thinks he’s cute as a button.

Other things: I’m working on yet another SCons tutorial, and polishing up several SDL tutorials, and checking them all for errors. So keep your eyes pealed.

6/5/2003 Entry

GNU – the organization that keeps giving. I’ve currently got two different projects hosted on nongnu.org. All things given, it’s a lot better service than sourceforge. (Ahhh, sourceforge, home of twelve million dead projects, and a couple dozen of still useful ones.) But that’s not what I’m here to write about.

I’m here to write about the sickening pothole into hell that is autoconf. Autoconf, through some sickening joke, has managed to succeed as the #1 method of building makefiles. It’s used by all major projects, in some form or another. If it’s on GNU/Linux, it’s most likely configured by autoconf(unless we’re talking about X11, the only piece of software that makes autoconf look stylish.) But see, the funny thing is, I don’t think ANYONE quiet understands how Autoconf works outside of the three or four people that maintain it.

I would like to know for instance, why on half the projects I compile, after running configure once, and typing make, configure, for no apparent reason decides that it needs to run AGAIN. Each time running the SAME freaking tests OVER AND OVER AND OVER. I can go through half of them by memory now, from watching compile screen after compile screen after compile screen. Let me think “checking for unistd.h”, “checking whether build environment is sane”, “checking for BSD-compatible install”, and so on and so forth. One wonders if it ever occured to anyone that *maybe* this invention of a hard drive could *somehow* manage to actually store this information for later use.

But, I digress. It’s the very height of fun when installing program xyz-version 5.4.2, to sit and run through the 55,000 different options for this program. Is it –with-x today? Or –with-gtk? Or do I need to do a –enable-gnome? Oh the choices!

Of course, when things go wrong, that’s where the real fun begins. Oh no, the xyz-version 5.4.2 thinks that I have libabc installed in /usr/lib, when it’s really in /opt/kill/me/now/damn/it. Of course, the wonderful configure picked up on the fact that it exists, just not WHERE it exists. I don’t, however, know this immediately. Instead, I have to recompile the program, and redirect stderr(hint for n00bs its >&) to a file, tab through the file, and find the start of a 93 line long list of errors.

Now, if you where in this situation 5 years ago, you would know to take a quick look at the Makefile, and add a few more flags to one environment variable or another. So, you, being the seasoned Unix person you are, first go and pop up emacs(the one thing the GNU people got right), and open the Makefile, only to be suprised with a 50,000 line long monstrosity, with multiple, conflicting environment variables. Upon seeing this gateway to the seventh circle of hell,you of course, do one of the following: A. close the editor and try another piece of software, B. try to edit one of the 53 different .in, .am, .figtree, .bannana, .yoyo files that auto* uses, or C. shoot yourself in the head with a twelve gauge shotgun. Or, you could try to wade through the file, editing the 500 different $LIBS flags, all of which are completely useless except for the one three directories down called $(FOO_BAR_NONSENSE_NAME_VARIABLE), only to discover that having found the proper variable, FINALLY, running make this next time causes “configure” to rerun and trash all that hard work. Of course, you forgot to write down the file/line number or name of the variable, so you start the wonderful search all over again.

Let’s be honest. People don’t write configure.in files, they either A. use a tool to generate it, or B. copy them from someone else. What else would explain the same five errors that happen in all the programs that use autoconf. Finding documentation is even more of a challenge, you are left either purchasing a book(which will be out of date), reading an ancient howto(most of which doesn’t work properly), or wading through the even more wondrous “info” tree. It doesn’t help matters that the “info” tree seperates things out into 4 different packages, requiring you to flip from one to the other, to figure out why your configure.in is causing your makefile.am to puke when run through automake.

I’ve come to the conclusion that the auto* tools where designed by Satan himself in an attempt to drive me into a slow and deliberate madness. The sad thing is, I think it worked.