IT/Software career thread: Invert binary trees for dollars.

  • Guest, it's time once again for the massively important and exciting FoH Asshat Tournament!



    Go here and give us your nominations!
    Who's been the biggest Asshat in the last year? Give us your worst ones!

ToeMissile

Pronouns: zie/zhem/zer
<Gold Donor>
3,186
2,070
So I finally get access to my business units data in Snowflake earlier today. I sit down to get a feel for it and realize they gave me access to the wrong group. Wohn wohn.
 
  • 1Like
Reactions: 1 user

ToeMissile

Pronouns: zie/zhem/zer
<Gold Donor>
3,186
2,070
TJT TJT I remember you having experience with Snowflake, have you had users connect via Power BI (desktop or service)? Apparently, it’s a little weird with AzureAD SSO. I’m getting “ODBC: ERROR [28000] Invalid OAuth access token”.
The neither side admin seem to know why.
 

Louis

Trakanon Raider
2,836
1,105
TJT TJT I remember you having experience with Snowflake, have you had users connect via Power BI (desktop or service)? Apparently, it’s a little weird with AzureAD SSO. I’m getting “ODBC: ERROR [28000] Invalid OAuth access token”.
The neither side admin seem to know why.
I've never did snowflake, but troubleshooting these integrations can be a pain as there are a bunch of settings that can fuck it up and then updates will cause either side's documentation to be off. Really have to comb through the logs and see the request and response and potentially find a potential mismatch of what is expected.

Another thread said ensure BI is fully updated.

Failed to update data source credentials: ODBC:ERROR [28000] Invalid OAuth access token. [<number>].
Verify that the external_oauth_issuer parameter contains the correct value. In Azure AD, verify the access token is current.
 
  • 1Like
Reactions: 1 user

TJT

Mr. Poopybutthole
<Gold Donor>
42,797
109,252
TJT TJT I remember you having experience with Snowflake, have you had users connect via Power BI (desktop or service)? Apparently, it’s a little weird with AzureAD SSO. I’m getting “ODBC: ERROR [28000] Invalid OAuth access token”.
The neither side admin seem to know why.
I use snowflake all day every day.

I've killed all other BI tools at my company and we only use Looker now. Took two years but we have full consolidation of the myriad of stupid shit bought over the years. I haven't used power BI in ages but seems your SSO is fucking with the connection through power BI?
 

ToeMissile

Pronouns: zie/zhem/zer
<Gold Donor>
3,186
2,070
I've never did snowflake, but troubleshooting these integrations can be a pain as there are a bunch of settings that can fuck it up and then updates will cause either side's documentation to be off. Really have to comb through the logs and see the request and response and potentially find a potential mismatch of what is expected.

Another thread said ensure BI is fully updated.

Failed to update data source credentials: ODBC:ERROR [28000] Invalid OAuth access token. [<number>].
Verify that the external_oauth_issuer parameter contains the correct value. In Azure AD, verify the access token is current.
Yeah, I followed the main solutions. Power BI and ODBC driver is up to date.
I use snowflake all day every day.

I've killed all other BI tools at my company and we only use Looker now. Took two years but we have full consolidation of the myriad of stupid shit bought over the years. I haven't used power BI in ages but seems your SSO is fucking with the connection through power BI?
Yeah, SSO is being rejected. Based on my dealing with the Snowflake admin team, I’m pretty sure they need to fix some user account settings. I’m waiting to hear back on a couple emails that have gone out
 

TJT

Mr. Poopybutthole
<Gold Donor>
42,797
109,252
Yeah, I followed the main solutions. Power BI and ODBC driver is up to date.

Yeah, SSO is being rejected. Based on my dealing with the Snowflake admin team, I’m pretty sure they need to fix some user account settings. I’m waiting to hear back on a couple emails that have gone out
Do you require your actual user to connect to Snowflake? My solution does not. I have a service account that only exists within snowflake and does not have any SSO attached to it in the greater company org. That is the sole connection to the database from Looker.

It is read only and any other restrictions I place on the user accounts from within Looker. It works way better than having to use direct connections.
 

Louis

Trakanon Raider
2,836
1,105
Yeah, I followed the main solutions. Power BI and ODBC driver is up to date.

Yeah, SSO is being rejected. Based on my dealing with the Snowflake admin team, I’m pretty sure they need to fix some user account settings. I’m waiting to hear back on a couple emails that have gone out
Do the user mappings match? Adfs can send over the subject as upn, username, ect depending how the app is setup in adfs. The service provider will usually be expecting it in a matching nameid format on how the accounts are setup in snow.

So basically if adfs is responding with an "[email protected]" but the sp is looking for "name". Id look at the saml response and see whats coming over for the subject and nameid format and see if it matches snows config.

Our sso for our 3 servicenow dev instances crashed 3 weeks ago and I was thrown to the wolves on migrating it to adfs with no prior experience so I barely know what I am talking about and any advice should be taken with a grain of salt!
 

Identikit

Redneck Pornographer
<Bronze Donator>
2,211
3,875
TJT TJT I remember you having experience with Snowflake, have you had users connect via Power BI (desktop or service)? Apparently, it’s a little weird with AzureAD SSO. I’m getting “ODBC: ERROR [28000] Invalid OAuth access token”.
The neither side admin seem to know why.
if snowflake is up to date, it might be a discrepancy with nameID attribution, or token generation that devs have to fix. I have only been in the IAM industry for about a year, and I cant tell you how often token generation, or authorization protocol breaks when they update something.

I dont know snowflake, but I know 0auth/2 fairly well, and authorization is a fairly straight foreward process.

You might find more information by using something like SAML tracer chrome extension.
 

Chris

Potato del Grande
19,436
-10,732
Anyone got any tips on obscuring your code for your website?

My project uses large javascript libraries I've spent 3 years writing which are the biggest asset of the company. Worried about competitors stealing parts of it.

If anyone is curious, it's a website which generates practice/homework questions for middle/high school students.
 

Neranja

<Bronze Donator>
2,633
4,212
My project uses large javascript libraries I've spent 3 years writing which are the biggest asset of the company.
Do it the way Google does their CAPTCHA tests. You know, the "click on all squares that contain a fire hydrant.": Compile the JavaScript to a virtual machine target that has a VM runtime in the browser in JavaScript. For good measure the code is encrypted, the code can change it's own key at runtime and the VM can dynamically change what VM instructions do. I think the current implementation does this twice.

Otherwise your other option is to move the code to server-side only.

EDIT: The GitHub repo is long gone, but he describes it here:
6oCvO8N.png
 
  • 1Like
Reactions: 1 user

Lendarios

Trump's Staff
<Gold Donor>
19,360
-17,424
Anyone got any tips on obscuring your code for your website?

My project uses large javascript libraries I've spent 3 years writing which are the biggest asset of the company. Worried about competitors stealing parts of it.

If anyone is curious, it's a website which generates practice/homework questions for middle/high school students.

Minimize it, it obfuscate some of the functionality and variable names
just look at that
Copyright ? 2014 David Bushell | BSD & MIT license | Pikaday/Pikaday
*/
(function(l,q){if("object"===typeof exports){try{var t=require("moment")}catch(e){}module.exports=q(t)}else"function"===typeof define&&define.amd?define(function(e){try{t=e("moment")}catch(w){}return q(t)}):l.Pikaday=q(l.moment)})(this,function(l){var q="function"===typeof l,t=!!window.addEventListener,e=window.document,w=window.setTimeout,h=function(a,b,d,c){t?a.addEventListener(b,d,!!c):a.attachEvent("on"+b,d)},r=function(a,b,d,c){t?a.removeEventListener(b,d,!!c):a.detachEvent("on"+b,d)},g=function(a,
b){return-1!==(" "+a.className+" ").indexOf(" "+b+" ")},B=function(a,b){g(a,b)||(a.className=""===a.className?b:a.className+" "+b)},x=function(a,b){b=(" "+a.className+" ").replace(" "+b+" "," ");b=b.trim?b.trim():b.replace(/^\s+|\s+$/g,"");a.className=b},C=function(a){return/Array/.test(Object.prototype.toString.call(a))},n=function(a){return/Date/.test(Object.prototype.toString.call(a))&&!isNaN(a.getTime())},M=function(a,b){return[31,0===a%4&&0!==a%100||0===a%400?29:28,31,30,31,30,31,31,30,31,30,
31]},E=function(a){n(a)&&a.setHours(0,0,0,0)},F=function(a,b){return a.getTime()===b.getTime()},u=function(a,b,d){var c,y;for(c in b)if((y=void 0!==a[c])&&"object"===typeof b[c]&&null!==b[c]&&void 0===b[c].nodeName)n(b[c])?d&&(a[c]=new Date(b[c].getTime:)emoji_nose::C(b[c])?d&&(a[c]=b[c].slice(0)):a[c]=u({},b[c],d);else if(d||!y)a[c]=b[c];return a},D=function(a,b,d){if(e.createEvent){var c=e.createEvent("HTMLEvents");c.initEvent(b,!0,!1);c=u(c,d);a.dispatchEvent(c)}else e.createEventObject&&(c=e.createEventObject(),
c=u(c,d),a.fireEvent("on"+b,c))},G=function(a){0>a.month&&(a.year-=Math.ceil(Math.abs(a.month)/12),a.month+=12);11<a.month&&(a.year+=Math.floor(Math.abs(a.month)/12),a.month-=12);return a},m={field:null,bound:void 0,ariaLabel:"Use the arrow keys to pick a date",position:"bottom left",reposition:!0,format:"YYYY-MM-DD",toString:null,parse:null,defaultDate:null,setDefaultDate:!1,firstDay:0,formatStrict:!1,minDate:null,maxDate:null,yearRange:10,showWeekNumber:!1,pickWholeWeek:!1,minYear:0,maxYear:9999,
minMonth:void 0,maxMonth:void 0,startRange:null,endRange:null,isRTL:!1,yearSuffix:"",showMonthAfterYear:!1,showDaysInNextAndPreviousMonths:!1,enableSelectionDaysInNextAndPreviousMonths:!1,numberOfMonths:1,mainCalendar:"left",container:void 0,blurFieldOnSelect:!0,i18n:{previousMonth:"Previous Month",nextMonth:"Next Month",months:"January February March April May June July August September October November December".split(" "),weekdays:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
weekdays

 

Daidraco

Avatar of War Slayer
10,098
10,433
I've been dinking around with this app "Mimo" for a couple days. Ive read up on it and it appears to be pretty basic in the grand scheme. Regardless of the overall opinion, I want to learn Python. Which is where Mimo came into play. For self taught, what are my best options? Should I keep going with mimo? It seems really nice so far?...

I dont have a computer science degree - are there not self taught people out there anymore that have an extraordinary skill set?
 

Lendarios

Trump's Staff
<Gold Donor>
19,360
-17,424
I've been dinking around with this app "Mimo" for a couple days. Ive read up on it and it appears to be pretty basic in the grand scheme. Regardless of the overall opinion, I want to learn Python. Which is where Mimo came into play. For self taught, what are my best options? Should I keep going with mimo? It seems really nice so far?...

I dont have a computer science degree - are there not self taught people out there anymore that have an extraordinary skill set?

It is hard to go wrong with frigging MIT courses of computer sciences.
 

Neranja

<Bronze Donator>
2,633
4,212
just look at that
Doesn't work. Took me one Ctrl-Alt-L in a JetBrains IDE to reformat the code, and you can use the refactoring tools to rename functions and variables:
JavaScript:
(function (l, q) {
    if ("object" === typeof exports) {
        try {
            var t = require("moment")
        } catch (e) {
        }
        module.exports = q(t)
    } else "function" === typeof define && define.amd ? define(function (e) {
        try {
            t = e("moment")
        } catch (w) {
        }
        return q(t)
    }) : l.Pikaday = q(l.moment)
})(this, function (l) {
    var q = "function" === typeof l, t = !!window.addEventListener,
        e = window.document, w = window.setTimeout, h = function (a, b, d, c) {
            t ? a.addEventListener(b, d, !!c) : a.attachEvent("on" + b, d)
        }, r = function (a, b, d, c) {
            t ? a.removeEventListener(b, d, !!c) : a.detachEvent("on" + b, d)
        }, g = function (a,
                         b) {
            return -1 !== (" " + a.className + " ").indexOf(" " + b + " ")
        }, B = function (a, b) {
            g(a, b) || (a.className = "" === a.className ? b : a.className + " " + b)
        }, x = function (a, b) {
            b = (" " + a.className + " ").replace(" " + b + " ", " ");
            b = b.trim ? b.trim() : b.replace(/^\s+|\s+$/g, "");
            a.className = b
        }, C = function (a) {
            return /Array/.test(Object.prototype.toString.call(a))
        }, n = function (a) {
            return /Date/.test(Object.prototype.toString.call(a)) && !isNaN(a.getTime())
        }, M = function (a, b) {
            return [31, 0 === a % 4 && 0 !== a % 100 || 0 === a % 400 ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,
                31]
        }, E = function (a) {
            n(a) && a.setHours(0, 0, 0, 0)
        }, F = function (a, b) {
            return a.getTime() === b.getTime()
        }, u = function (a, b, d) {
            var c, y;
            for (c in b) if ((y = void 0 !== a[c]) && "object" === typeof b[c] && null !== b[c] && void 0 === b[c].nodeName) n(b[c]) ? d && (a[c] = new Date(b[c].getTime:)emoji_nose::C(b[c]) ? d && (a[c] = b[c].slice(0)) : a[c] = u({}, b[c], d); else if (d || !y) a[c] = b[c];
            return a
        }, D = function (a, b, d) {
            if (e.createEvent) {
                var c = e.createEvent("HTMLEvents");
                c.initEvent(b, !0, !1);
                c = u(c, d);
                a.dispatchEvent(c)
            } else e.createEventObject && (c = e.createEventObject(),
                c = u(c, d), a.fireEvent("on" + b, c))
        }, G = function (a) {
            0 > a.month && (a.year -= Math.ceil(Math.abs(a.month) / 12), a.month += 12);
            11 < a.month && (a.year += Math.floor(Math.abs(a.month) / 12), a.month -= 12);
            return a
        }, m = {
            field: null,
            bound: void 0,
            ariaLabel: "Use the arrow keys to pick a date",
            position: "bottom left",
            reposition: !0,
            format: "YYYY-MM-DD",
            toString: null,
            parse: null,
            defaultDate: null,
            setDefaultDate: !1,
            firstDay: 0,
            formatStrict: !1,
            minDate: null,
            maxDate: null,
            yearRange: 10,
            showWeekNumber: !1,
            pickWholeWeek: !1,
            minYear: 0,
            maxYear: 9999,
            minMonth: void 0,
            maxMonth: void 0,
            startRange: null,
            endRange: null,
            isRTL: !1,
            yearSuffix: "",
            showMonthAfterYear: !1,
            showDaysInNextAndPreviousMonths: !1,
            enableSelectionDaysInNextAndPreviousMonths: !1,
            numberOfMonths: 1,
            mainCalendar: "left",
            container: void 0,
            blurFieldOnSelect: !0,
            i18n: {
                previousMonth: "Previous Month",
                nextMonth: "Next Month",
                months: "January February March April May June July August September October November December".split(" "),
                weekdays: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),
                weekdays
 

Neranja

<Bronze Donator>
2,633
4,212
Regardless of the overall opinion, I want to learn Python. Which is where Mimo came into play. For self taught, what are my best options?
This totally depends if you already know programming, algorithms and data structures and if you are already familiar with core concepts of object-oriented programming and functional programming (which comes into play in Python with things like generators and iterators).

People learn new things in different ways, with some ways being harder or easier for some. Personally, I am not that fond of video courses because it locks me in time, and the most useful feature of a human being teaching you is lost: You can't ask them if you have questions.

I am also not that fond of apps to teach you. At one point in time you are required to jump into a real IDE or text editor to solve some real-world problem. It's better to familiarize yourself with that as early on, because IDEs nowadays have become a whole set of kitchen appliances plus the contents of a gardening shed combined together. The earlier you learn how to use the debugger, the earlier you can find errors in your code, fix them and learn from them.

However, I am recommending training wheels if they are useful to you. For Python there is PyCharm Edu, which is a free stripped down version of the real PyCharm IDE. They also have courses that snap into it, but I don't know the quality, nor ar you required to use them.

Back in my day we learned things from books printed on dead trees. I have heard good things about Learn Python the Hard Way, which also has a free edition online.

Regardless of the way, there is an universal truth: You have to do the work. You have to do the work. This is more about learning the whole problem-solving process than it is about writing things down for the computer to do.
 
  • 2Like
Reactions: 1 users

Daidraco

Avatar of War Slayer
10,098
10,433
If I heavily invested into self taught in the fields a position requires - could I even intern anywhere? After the fact, would that be enough to be hired w/o a CS degree?
I haven’t been in college for almost 14 years and god I do not want to go back. Especially after seeing how many classes I would have to take over and the gluttonous pointless amount of classes added to the curriculums.
 

Lendarios

Trump's Staff
<Gold Donor>
19,360
-17,424
If I heavily invested into self taught in the fields a position requires - could I even intern anywhere? After the fact, would that be enough to be hired w/o a CS degree?
I haven’t been in college for almost 14 years and god I do not want to go back. Especially after seeing how many classes I would have to take over and the gluttonous pointless amount of classes added to the curriculums.

Here is the reality. You are always going to be behind the eightball when compared to a computer science graduate.

You are going to have to make it up by showing your work during your interview. Also if you don't like programming, picking it as a career choice would be very unwise.

At the very least you have to be passionate about it, you have to show that you care about it. You can get hired without a degree on the field, but you have to then show that you can contribute to the company. You have to show that you can use python or xyz to solve problems, or if you are the owner of a nice pair of tits, that also goes a long way in being selected as an intern.

If you want to use python as a learning tool and then pivot to frontend that can work too. Frontend work with react requires less programming knowledge and while it does require a unique set of artistic and TONS of patience.

The main thing I can recommend is that you should know how computers work at a high technical level, you should know how the internet works in a high technical level. You should know how AWS works at a high level, how Azure works. Not the neety gritty, but is someone mentions AWS, you should know some of it.

It is very common to hire people without a degree, but what is not common is to hire people who fail the technical interview. So learn, teach your self, get those ass-hours under your belt ( meaning putting your ass in front of a computer and work, learn).
 
  • 1Like
Reactions: 1 user

Vinen

God is dead
2,790
495
If I heavily invested into self taught in the fields a position requires - could I even intern anywhere? After the fact, would that be enough to be hired w/o a CS degree?
I haven’t been in college for almost 14 years and god I do not want to go back. Especially after seeing how many classes I would have to take over and the gluttonous pointless amount of classes added to the curriculums.
Will be very difficult. You will likely need to join a smaller company which does not pay well and then work up from there.

Junior roles are rarer then Senior roles.
 
  • 2Truth!
  • 2Like
Reactions: 3 users

Neranja

<Bronze Donator>
2,633
4,212
If I heavily invested into self taught in the fields a position requires - could I even intern anywhere? After the fact, would that be enough to be hired w/o a CS degree?
I haven’t been in college for almost 14 years and god I do not want to go back. Especially after seeing how many classes I would have to take over and the gluttonous pointless amount of classes added to the curriculums.
The CS degree itself is a piece of paper, and its worth seems to be slowly dminishing by both the sheer amount of people that have one and can't code their way out of a wet paperbag, and by the decline of the higher education industry in the USA, and the reforms of the higher-education due to the Bologna Process in the EU.

For starters, you should invest a few weeks of free time to see if this is even a path you want to go. It may look glorious on the outside and is hyped a bit, but it can be a real shitshow. The programming part of a real job is probably less than 50% of your day. The rest are things like administration, artefacts, debugging and meetings. Which everyone hates, but for some reason we can't get rid of them, so in an attempt at reverse psychology we made it look like we totally embraced them with things like SCRUM.

However, if you don't have any work experience on your CV you have to:

a) show things you have worked on, preferably in source. Personal projects on GitHub/GitLab are great, having worked on open source projects is even better. However due to the influx of a lot of students trying to brush up their resume with "i worked on that, look at the commit log" some open source projects have become wary of people and will most likely scrutinize your code, especially if its security-related. It's a bit like StackOverflow, where Indians copy&paste answers from one question to another in an attempt to game the system.

b) Learn how to navigate technical interviews, and what to expect. I can't tell anything about this, as those depend on the industry and differ from country to country.
 
  • 2Like
Reactions: 1 users

TJT

Mr. Poopybutthole
<Gold Donor>
42,797
109,252
I posted heavily about the technical interview bullshit in the job hunting thread. You can read tons of books on it but you honestly can't really know what kind of stupid shit you get asked. I just kind of learned to enjoy it.
 
  • 3Like
Reactions: 2 users