The Joys Of Programming

lunchbox12682 wrote:

So after 12 years of embedded C and Ada, I'm looking at now supporting an existing C++ code base. I am way more rusty than I realized. Anyone have good suggestions on books or websites that cover advanced to expert level topics? Like are the Stroustrup books good?

I don't particularly like The C++ Programming Language (very very dry) or A Tour of C++ (out of date, I've just checked Amazon and there is a 2nd edition releasing 29 June 2018 which may fix my issues), though Programming: Principle and Practise is a great beginner book it will be very slow for a working programmer.

So Scott Meyer's Effective C++ is my goto for reminding myself about things when I'm interviewing, it's pre-C++11 style but is still good and probably relevant if you are supporting an existing C++ codebase. After that I read Meyer's Modern Effective C++ which has the more modern style idioms in it.

A good first place isMicrosoft's Welcome Back to C++ articles

In my day to day the only website I generally refer to is C++ Reference

These days I just use Wayland and pretty much everything works out of the box with either nVidia or Intel graphics. Including my multiple displays at different DPI. I have a laptop and a desktop both using Fedora 28 and life is remarkably trouble-free.

I wouldn't run CentOS on a desktop or laptop. Fedora's close enough and keeps better up to date with that stuff.

Best tech conference keynote ever.

Mixolyde wrote:

Best tech conference keynote ever.

Ten minutes in but I'm in love with this man.

"Machine learning is the inverse fight club"

Mickens has also written a few hilarious columns for one of the USENIX journals. Easy to google up and enjoy.

e.g. https://www.usenix.org/system/files/...

psu_13 wrote:

Mickens has also written a few hilarious columns for one of the USENIX journals. Easy to google up and enjoy.

e.g. https://www.usenix.org/system/files/...

Wow, that is also really good.

Our current environment:

- Microsoft stack development and some Angular
- Visual Studio, SSMS, and VS Code for IDEs
- VSTS with git for Version Control and CI / deployment

The above items are set in stone, they aren't going to change.

I'd like to get our many many many libraries into a package repository like NuGet so we're handling dependencies via packages instead of having all the library projects in our solutions.

Are any of you using NuGet with VSTS / TFS? If so, is it fairly easy to implement?

-BEP

Is NuGet still the thing to use, and not npm or yarn?

bepnewt wrote:

Our current environment:

- Microsoft stack development and some Angular
- Visual Studio, SSMS, and VS Code for IDEs
- VSTS with git for Version Control and CI / deployment

The above items are set in stone, they aren't going to change.

I'd like to get our many many many libraries into a package repository like NuGet so we're handling dependencies via packages instead of having all the library projects in our solutions.

Are any of you using NuGet with VSTS / TFS? If so, is it fairly easy to implement?

-BEP

We don't use VSTS. We have a separate git instance (gitlab currently). You can use some of the VSTS interface to play with git but that might be what you are talking about anyway.

We do, however, use NuGet for some of libraries now, which greatly simplified our use of SQLite. It works well but sometimes doesn't refresh/update quite as well as something like gradle. Easy to implement? Yes. Easy to find straightforward documentation? Not as much.

Thanks for the input. I just noticed that the NuGet server of VSTS is Pay For and not included; at least in our case it is because we have more than 5 people that will need to read from it.

I'll look into some other NuGet server options when I get time.

-BEP

Mixolyde wrote:

Best tech conference keynote ever.

Lordy thanks for sharing. That was phenomenal.

I will consume all content and opinions emitted by the human known as James Mickens

DanB wrote:

I will consume all content and opinions emitted by the human known as James Mickens

Yes, this is man is a National Treasure and should be protected by Secret Service at all times.

The “threat model” section of a security paper resembles
the script for a telenovela that was written by a paranoid
schizophrenic: there are elaborate narratives and grand conspiracy
theories, and there are heroes and villains with fantastic
(yet oddly constrained) powers that necessitate a grinding
battle of emotional and technical attrition. In the real world,
threat models are much simpler. Basically, you’re
either dealing with Mossad or not-Mossad. If your adversary is
not-Mossad, then you’ll probably be fine if you pick a good password
and don’t respond to emails from ChEaPestPAiNPi11s@
virus-basket.biz.ru. If your adversary is the Mossad, YOU’RE
GONNA DIE AND THERE’S NOTHING THAT YOU CAN DO
ABOUT IT. The Mossad is not intimidated by the fact that you
employ https://. If the Mossad wants your data, they’re going to
use a drone to replace your cellphone with a piece of uranium
that’s shaped like a cellphone, and when you die of tumors filled
with tumors, they’re going to hold a press conference and say
“It wasn’t us” as they wear t-shirts that say “IT WAS DEFINITELY
US,” and then they’re going to buy all of your stuff
at your estate sale so that they can directly look at the photos
of your vacation instead of reading your insipid emails about
them. In summary, https:// and two dollars will get you a bus
ticket to nowhere.

While somewhat accurate, what he's failing to mention is that using https means that you're much harder to surveil passively, as part of global monitoring schemes. It means the instant dossier that can be generated by the American Stasi will have less information in it, possibly a lot less. You still leak info, but they're steadily working on plugging those leaks.

If you're actively targeted, then the game changes completely. But using good security helps keep from passively giving away information to anyone, be that governments, advertising agencies, or big corporations. No sense in populating that dossier if you don't have to.

bepnewt wrote:

Thanks for the input. I just noticed that the NuGet server of VSTS is Pay For and not included; at least in our case it is because we have more than 5 people that will need to read from it.

I'll look into some other NuGet server options when I get time.

-BEP

Our shop is very similar and we're using the free tier of ProGet for a package repo, Powershell module gallery (with a caching connector for the public PS gallery), and container registry.

We don't use VSTS/TFS either, and instead use on-prem Gitlab and Jenkins.

LiquidMantis wrote:

Our shop is very similar and we're using the free tier of ProGet for a package repo, Powershell module gallery (with a caching connector for the public PS gallery), and container registry.

We don't use VSTS/TFS either, and instead use on-prem Gitlab and Jenkins.

That may just work for us. One problem may come up when we have contractors working on a project with us. They'd have to be on our VPN to pull the packages since we'd keep that server in-house.

I'll have the dev manager look at it. Thanks.

-BEP

My UMatrix plugin completely blocks the ProGet site. It has an explicit rule built in. There's probably something really shady going on there, and I'd be very wary of them.

Anyone here jumping in on the new GPUs to do anything programming related? I’m thinking mostly machine learning stuff due to the extra cuda cores.

I’m building a new pc and I’m sorely tempted to get a 2080 to see how tensorflow runs with it.

We have a handful of the Tesla v100s coming to work at some point.

Clusks wrote:

Anyone here jumping in on the new GPUs to do anything programming related? I’m thinking mostly machine learning stuff due to the extra cuda cores.

I’m building a new pc and I’m sorely tempted to get a 2080 to see how tensorflow runs with it.

We've got a Telsa in an external enclosure in my lab. I haven't used it yet.

IMAGE(https://image.ibb.co/irvdmp/secret.png)

That's one of my remaining bits of brain damage from first programming in BASIC, all those years ago... I still find starting at zero to be a little unintuitive. Even back then, you could do OPTION BASE 0, but who would be the madman to inflict that kind of pain on themselves?

The third element being element 3 is a lot easier when you're just starting.

I keep writing and deleting some version of this because it seems silly but I think it might be worthwhile to discuss.

I'm applying for some roles for which my qualifications aren't direct matches, but for which I feel my aptitude, maturity, and enthusiasm are legitimate strengths. For instance, as a data analyst I have worked with stakeholders at every level of an organization, gathering requirements, suggesting measures and metrics of use, and have delivered analyses in different ways. I have worked on the development of a modest data warehouse built around fact-dimension data models. I have audited data for integrity and have put solutions in place to address issues. I am capable.

I have not, however, used, built, or significantly contributed to the development or maintenance of data pipelines involving streaming data tools (e.g., Apache Spark) or columnar data stores (e.g., Amazon Redshift). I have not worked with SAP nor Informatica nor Tableau nor developed and delivered models using R or the Python statistics stack. I am capable of these things and am working toward some measure of competency in them.

On one hand, I feel it demonstrates some type of positive character to frankly point out deficiencies and address them with the combination of aptitude and attitude. On the other, there is the pragmatic effect--in a marketplace built on some amount of skill inflation, I look even more deficient by comparison; and there is the sociological and interpersonal effect--by not committing to the aptitude and attitude on my own part, I'm kind of offloading that responsibility to someone else. They don't want to absolve me of my deficiencies relative to the position; they want me to step up and find a way to succeed.

I hope this doesn't seem like navel-gazing, but it's something I struggle with during the application process generally, and especially for roles which I feel well-fit for but the qualifications for which I don't match on paper. (Of course, there is also the phenomenon that job descriptions as a social phenomenon are broken, but that's another discussion.)

Don’t point out your deficiencies, especially not in an application or resume. Instead talk to your strengths.

As someone who hires people, I'm ok with people telling me what they don't know (we'll have to get there at some point in the conversation). However you'll get much further with me if you can explain what you've done despite the gap. For example with Amazon Redshift you could probably set up an example for yourself just to play with it. So if you were able to talk through what you'd done to try and learn, I'm much more willing to continue the conversation.

When I interview, I'm always happy when a candidate tells me directly that they haven't had experience with something I'm asking about, and then follow it up with what they've heard about it and how they would likely go about learning it.

In my life, I estimate I've hired something like 50-75 people. I have never, ever hired a candidate who checked every box on the job req. When I need that dev, I hire through my personal network, and there is no interview. I wouldn't sweat "geez they're asking for Redshift and I've only read a little about it."

On the other hand, resume inflation gets your interview with me ended in a hurry. If you're "proficient" or "expert" in something and you give me the deer-in-headlights look when I ask a warmup question, we're probably done right then and there.

Being the only remote is hard.
There are many reasons that this is hard, but let's just say being the only remote is the main factor.

I'm trying to learn the very, very, very (very) basics with Python, because I've been trying to mimic Alfred scripts some of my coworkers user in Autokey.

One thing I keep running into on Linux, is that there seems to be a lot of different clipboards. So even if I have something like this:

import subprocess

binChrome = '/usr/bin/google-chrome'
binFirefox = '/usr/bin/firefox'

keyboard.send_keys("+l")
keyboard.send_keys("+c")

time.sleep(1)

urlPrivate = clipboard.get_selection()

winClass = window.get_active_class()
if winClass == 'google-chrome.Google-chrome':
subprocess.Popen([binChrome, "--incognito", urlPrivate])
else:
subprocess.Popen([binFirefox, "-private-window", urlPrivate])

Which is supposed to highlight the address bar of the current browser tab, copy it, and then open it in a private browser window, I run into situation where the script *sometimes* throws an error about the X selection being empty (even though I know it's currently in my clipboard).

"raise Exception("No text found in X selection")"

Is there a way to avoid that? Even when stuff is definitely highlighted, and definitely copied, I guess sometimes it's not in the specific clipboard that "clipboard.get_selection()" uses?

I'm also having trouble figuring out if it's possible to tile windows. For example, if I opened two Chrome windows with two different URLs, could I tile them so that both are visible?

I did start reading https://automatetheboringstuff.com/, and I've been Googling to try and figure stuff out through copying/breaking, but I'm a bit stumped on the above two things.

Generally there are only two clipboards. The normal/traditional one which requires an X event to copy material to it (such as ctrl-c or right click and select copy from the context menu). More sophisticated linuxes maintain a clipboard history so you may need to use an index to get stuff out of it.

The second clipboard available is the temporary high-to-copy one. Under this system any text currently highlighted is available to be pasted by a middle mouse click event but the highlighted text isn't otherwise buffered, any new highlighting event gets rid of the old text.

Then in my experience not all apps correctly work correctly with both clipboards. Java GUI apps almost always do not respect the highlight-to-copy buffer. In gnome, Gtk2 and gtk3 apps sometimes do weird things with not being cross compatible to the clipboard(s), and for a long time Firefox was only Gtk2.

Beyond that I have no further Linux clipboard insights.

Copy and paste on Linux is such a mess. Even after all these years, I never quite know what to expect with it, and I'm not trying to even touch the stuff, programmatically. That's just as a user.