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

wilkxus

<Bronze Donator>
518
210
Quite curious @a_skeleton_03, what exactly are you thinking of doing? Last idea was cool and worked out well heh.

Generally speaking I only see 2 potentially usefull options open :
  1. emulation
  2. hand translate & port
  3. generic translate ...too complex/impractical
(2) auto/hand translate & port
I worked on some porting and migration projects in the 90s, some hefty (for the time) Mainframe projects that involved mixes of shell languages, scripts, 4GLsand compiled languages: the problem domain made it easy to auto translate a lot of the labor intesive coding, and hand craft/tweak the rest. The tools for the conversion and translation were hand crafted only for our applications though, not really reusable for anyone elses code. These days large applications just grow and get enhanced, rewritten and re-architected to suck up new hardware and software resources rather than porting.

(1) emulation
In general it makes no sense to translate unless you are trying to preserve an identical application (Docker?). I still have another assembly project like that from the 80s for *preserving* a game (the Original Bards Tale RPG from Commodore 64 :). After stripping out copy protection it was a virtually 1:1 assembly port from original 8 bit 6502 to Motorolla 68k assembly (Atari ST), with hand tweaked *drivers*, if you could call it them, and bits in C, portions for video and sound and timing hardware.

Back then there were no software emulators yet but the beauty was it ran natively, much faster than C64, 100% without emulation, without disk swapping. Today only way I can run it is inside a software M68k emulator for Atari (Gemulator)

(3) more generic translation?
As for translation between languages (C to python).....moving between higher and lower level languages you are really alwas talking about more of a porting programming job than translation. You need to port & rewrite a lot unless you perhaps wanted to grandfather & emulate an application in its as close to original state on a new (and perhaps more portable platform or set of heterogeneous set pf hardware platforms). ie porting 8 bit assemby apps to C or Python....except then it makes more sense to use an existing emulaton layer.

Future! AI and neural learning networks!

This sort of auto translation stuff from one random language to another only makes sense if you were to develop a suite of smart, neural net learning AI type compilation & development tools (future tech cutting edge research stuff, with OSes and tools that do not exist yet).... in our heterogeneous computing future :)..... it might eventually make sense, with enough software and demand for it ....unlikely without MUCH more inteligent software dev build and compile tools.

As I said bove, for GAMES it might make sense already today, to preserve, emulate them and make them accesible without destroying their artistic essence or uniqueness by mangling through a port..... but just for fun or kicks, not practical.
 

Deathwing

<Bronze Donator>
16,392
7,392
Gary Kasparov was on Sam Harris' podcast, and he was talking about playing chess vs a computer. The bottom line is that now, even at Kasparov's level, there is no human on Earth that can beat the best computer. However, a human/AI team can, easily at that. I think that's probably the way the industry is headed. I don't know how he does his AI-assisted human playing chess thing, but I imagine that is the concept of where attacking/pentesting/code review is heading over the next decade or more.

So, kinda like a virtual cyborg? I know, it's a real stretch of the word, I just like it.
 

Asshat wormie

2023 Asshat Award Winner
<Gold Donor>
16,820
30,964
Gary Kasparov was on Sam Harris' podcast, and he was talking about playing chess vs a computer. The bottom line is that now, even at Kasparov's level, there is no human on Earth that can beat the best computer. However, a human/AI team can, easily at that. I think that's probably the way the industry is headed. I don't know how he does his AI-assisted human playing chess thing, but I imagine that is the concept of where attacking/pentesting/code review is heading over the next decade or more.

I think chess AI is just building up the state space, probably a few levels at a time, and then traversing it and picking the right moves using some heuristic (with a shit ton of optimization of course). Also Kasparov said he got super tilted by deepblue making a move Kasparov didnt understand so some human element went into his loss. Now the victory over the world champion in Go last year was a lot more interesting. The computer made moves that made no sense to all observers and supposedly such moves would never be made by a human. We just cant hold enough board state in our minds to do so. But in the end, both AIs were highly customized to these particular games. The Deep Mind crypto stuff is fascinating because the machines were not told to do anything other than to make sure that the hostile AI doesnt intercept the messages. They developed their own systems and in fact talked to each other in ways the researchers didnt understand. This possibly implies that no human interaction will be needed or even helpful for such systems. Who knows but just in case, All hail Skynet.
 

wilkxus

<Bronze Donator>
518
210
I dont agree that a deep learning approach is what a language translation system would use. I would imagine a type system akin to proof checkers is the way to go.

Oh? Curious why.....

Sorry in advance if this is too off topic for a general thread.... might be TLDR for most.

Trouble I see is that algorythmically it has been conceptually too tough, in practice, because it is so onerously complicated (often actually provably impossible) to write and maintain by hand even just a working practical, let alone*provable*, auto generating system to *understand* language well enough to translate. Provability and human language/idea domains do not mesh too well.

In translation, language semantics are complex enough that for complex translations, the semantic and impled meanings behind the language have to be inferred and understood and changed and updated!. And that is in practice too complex and time consuming a task to implement & maintain by hand crafted *provable* algorythms.....To much data for our little brains to code directly =p, but it can be adapted and done well by a neural network (our brains included :) that learns the rules & exceptions by learning heurystically from examples.

Hand crafting algorythms by hand is.....SLOWLY going to be fading the way of do-do. Soon IMHO... as soon as practical custom hardware & software for learning systems mature (from experimentation stages mostly still) and become more (hopefully) generally accesible.

Rational Rose & IBM tried to do code generation but I do not think that has evolved into usefullness (YET?) aside from its corporate/govt process burdened niches. RR was pita last time I had to use it around 2006-8, duno what state it is in today. Not certain such translation systems (from UML etc to working software) will be REALLY usefull @ scale until you can *teach* the generating tools what good code *looks* like without having to hand code it yourself.

In near future I would propose we might/could see smart (neural net assisted) automation and reduction of coding complexity by augmenting our hardware & dev tools:
  • hw sideof things in OS,
  • then parsers & compilers
  • more OS application service layers (AI analyzed and generated scheduling profiles etc)
  • & other domain specific middleware

It appears to me it will be more practical to train a decent language/code generator (I would not say programmer yet hehe, too scarry) and verify/debug the results by hand with human & automated tools. Easier than worrying about the MUCH more complex fully automated or provabale system.

Welcome job obsolesence for many many many engineers! :-(
Heurystics and adaptive neural learning networks should prove to be highly disruptive here and .... everywhere in software development and engineering. *sigh* kinda sad really, to be looking at obsolesence ....


But speaking of deep learning, I heard about this on a podcast yesterday and its an awesome read:

https://arxiv.org/pdf/1610.06918v1.pdf

Basically a sender and receiver neural networks were given a goal to protect information from a hostile neural network during transmission. The machines figured out a way to successfully encrypt the data without being told anything about encryption. Pretty hot.

In other news, this just hit my mail box:

http://www.acm.org/binaries/content/assets/public-policy/2017_usacm_statement_algorithms.pdf

Who is ready for some SJWisms in their algorithms? Hell yeah! :(


Hmmm first USACM statement: in my view it seems like just pandering to politicians, it is not so much about provability (not really possible) but just conflict of interest and money will win over ethics every time anyhow :-(. It would take societal scale value shifts to produce results to improve things. Improving things in direction of general social interest over just economy, jobs and profit is tough. If people at ACM want to influence positive change it will have to happen at HUMAN education level, instilling of values in children by parents who raise them (hard to do, takes generations), not by policing algorythms after kids grow up and struggle with Ethics vs Profit against their mostly corporate employers interests of survival.

Proof or correctness is too ambiguous and open and often contradictory set of problems & concepts & conflicts of interest: in my experience in life things often appear to boil down to:

  1. it might work for one group A with criteria X,
  2. but not work for group B with same criteria X, (because they desire something else)
  3. and you then get two different *correct* systems for different users trying to do perhaps *same* thing, just differently....
In a benign example, even to the degree some features in games (like in Everquest) are BUGS for some people, and FEATURES to others :) Not a matter of proof, kinda like Atheism/Theism Gnostic/Agnostic hehe but in software world....

Second, thanks for the very nice crypto paper link. I Read about this encryption somewhere a couple of months ago but never had a chance to track down details, what podcast was it you follow?

Imho the communications networks stuff is very cool but:
  • It will make breaking DRM 100% impossible without an AI soon.
  • Yes, let us welcome our new soon to be unhackable AI machine overlords.... =p

Too much of the security stuff is getting baked into the hardware :-(

/wave @ William Gibson.....
 
  • 1Like
Reactions: 1 user

Asshat wormie

2023 Asshat Award Winner
<Gold Donor>
16,820
30,964
Oh? Curious why.....

My first reaction was that such systems would be impossible to train. What values would be assigned to the programs for the network to learn/train on? You could probably do such a thing by turning the program semantics into type systems and assigning value weights to different types and types of types maybe? At that point though why bother with learning? Might as well try to map these types to types from the target language and see if that gets you anywhere. Anyway it was just a gut reaction. Maybe turning a program into a system of types and then doing some learning on this new system is somehow effective, would be an interesting piece of research (if not done already). We have a PhD on this board who does Machine Learning, maybe he has an opinion.
 

Lendarios

Trump's Staff
<Gold Donor>
19,360
-17,424
Another thing on the Kasparov v deep blue was that deep blue was not committed to anything. Human psychology makes it that once we go down a certain path, we don't backtrack, but instead try to find solutions along that path.
I think deep blue would make plays, then take them back because they were no longer optimal to a new board state. A human rarely would do that.
Nowdays computers are only used for training. We can no longer beat them.
 

Tenks

Bronze Knight of the Realm
14,163
606
Obviously I can't say a whole ton but the project I'm working on has a chance of being an opening ceremony con reveal. I'm not holding my breath but that would be a dream come true. Never been more excited about going to work in my life.
 
  • 7Like
Reactions: 6 users

a_skeleton_03

<Banned>
29,948
29,762
Obviously I can't say a whole ton but the project I'm working on has a chance of being an opening ceremony con reveal. I'm not holding my breath but that would be a dream come true. Never been more excited about going to work in my life.
We hope you do great things.
 

Noodleface

A Mod Real Quick
37,961
14,508
Nice Tenks. Without getting into it are you off the billing stuff then? When you said c++ and knowing blizzard does games in that languages I wondered.


I'm still really enjoying my job. I don't love java most of the time but I'm coming around. Also I feel like the code here sometimes is very spaghetti and amateur. I've done a few optimizations and th eyre like wow are you a God. No. I'm just a Noodle.
 
  • 1Like
Reactions: 1 user

alavaz

Trakanon Raider
2,001
713
Question for php people, best ide/ environment for development on windows?

Well, if you want an actual IDE, then I guess eclipse is probably the de-facto free standard. If you (or your company) have some money to blow - JetBrains makes good products.

Me - I like to use a text editor and the command line and/or a local web server. XAMPP is free and awesome for development. If you want syntax highlighting and what not Notepad++ is old faithful. I've recently switched to VS Code for all my scripting though and I really like it. I'm sure it has a PHP module.
 

Tenks

Bronze Knight of the Realm
14,163
606
Nice Tenks. Without getting into it are you off the billing stuff then? When you said c++ and knowing blizzard does games in that languages I wondered.

I'm still on battle.net. There are C++ jobs on battle.net but I'm not on one of those teams. Still Java.
 

wilkxus

<Bronze Donator>
518
210
Nice to hear Noodle. Since you have a firmware and C and background you will likely benefit a lot from your close to the metal perspective. Compared to OOP Java peoples you might as well be an assembly Guru. You might have a much keener eye and enjoy quite an advantage in aptitude for spotting details in common optimization and performance issues that will escape other mere Java mortals ;)
 

Palum

what Suineg set it to
23,397
33,527
OK brosephs I need your opinions. While I have a tech and software background I never took the career path of a coder so somewhat flying blind here.

I have a brother who is graduating a decent state school with his BS in CS soon, OK GPA but nothing outstanding and he's got 4 years of PT experience working in the lab at the school testing new hardware and software to meet IEEE (I think?) specs.

They've offered him his masters for free if he stays on at the lab. Fam is pressuring him to go, I am hesitant. Dad is saying his MS helped him get a great job he would not have otherwise gotten. Dad is 30 years removed from undergrad and job market is way different as are expectations in technology, in my opinion. To be clear, I am not against him obtaining an MS or PhD (or anything) but I think the value proposition has to be looked at as well as the timing. Almost all of the jobs he's looking at only require a BS and some of the larger companies state you can only apply for the entry level positions within 12 months of graduating with BS (clearly aimed at recent grads into internal pipeline). My perception is he's choosing the 'easier' path of just staying in school with no real plan, hoping to figure it out in another 2 years. I also think the risk is greater because if he doesn't do better at his MS, he's going to be competing a lot with higher GPA undergrads with less pay requirements/expectations and will suffer.

So what is your experience for software engineering and/or hardware/embedded devices? I perceive there to be very little practical value from an MS and that it might make his eventual job search harder rather than easier if he's competing with recent BS grads. It would be very different if he were going to a top school (or ivy league) or going for something like CE or EE in postgrad.

Thanks
 

Vinen

God is dead
2,782
486
MS is good if and only if you plan on working Public Sector Jobs / Defense Contractor. A MS is often required at certain points in order to get a promotion. (YAY contract billing)
PHD can potentially get you a job as a researcher at a large firm (Facebook, Google, VMware, etc...) but those positions are far and few between.
 
Last edited:

Palum

what Suineg set it to
23,397
33,527
Well even if question the wisdom of getting it right out of school? I feel like MS is only relevant with the experience to back you up, IE, something you could work on/get simultaneously. Would you even be able to go right into those defense contractor positions out of school fresh with no tenure at the agency or w/e?