• OK, it's on.
  • Please note that many, many Email Addresses used for spam, are not accepted at registration. Select a respectable Free email.
  • Done now. Domine miserere nobis.

Modeled the Cognitive Functions in Code (feedback welcome)

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
As previously mentioned, I'm coming up on a small presentation I'm giving on the cognitive functions and to aid in the presentation I wrote a small app (for non-profit, educational purposes). If you have any suggestions, feedback, etc. please let me know. The code is written in the Scala language, but I have not yet made an official release. Depending on community interest I may cleanup the code and make a release. I cannot pay you for your help but any constructive feedback would be appreciated. So far I have not received a single piece of feedback from the forum (perhaps because people are not able to install scala/Scala-IDE properly?) But here are some interpretations I've added.

Myers and Briggs
Myers-Briggs_zps337b93bd.png


David Keirsey's Temperaments
Keirsey_zpsde981552.png


Socionic's Quadras
Socionics-Quadras_zps9c3fe028.png


Socionic's Clubs
Socionics-Clubs_zps909cf24f.png



As of right now I'm contemplating adding some sort of bread-crumb-trail feature to show which view/grouping/naming is currently selected. And I have some minor GUI eye-candy to work out.
Anyway, I still consider this the early stages of development so you can PM me if you'd like to beta-test (this time I'll offer already compiled byte-code, so compiling won't be necessary) or post here if you have questions/comments. Thank you for your time.
 

QuickTwist

Spiritual "Woo"
Local time
Yesterday 8:23 PM
Joined
Jan 24, 2013
Messages
7,182
---
Location
...
It looks good. I don't understand the Socionic's Quadras though. Could you explain more what this means?
 

Cherry Cola

Banned
Local time
Today 2:23 AM
Joined
Mar 17, 2013
Messages
3,899
---
Location
stockholm
Looks like the same thing they got on celebritytypes.com but with more categories, cool.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
It looks good. I don't understand the Socionic's Quadras though. Could you explain more what this means?
Thanks, I appreciate it.

And certainly. My interpretations of Socionic's Quadras are just a grouping by sets of cognitive function. (I actually had this modeled in a different way before I learned about Quadras) Here is another way to look at it (I literally had this coded up before I learned about quadras, it's good to know I'm not the only one who thinks it is an important way to group the personalities)...
FunctionSets_s9d1d1fe5.png

I am using "set" to mean a group of things such that, no two elements of the set are the same and order does not matter.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
Looks like the same thing they got on celebritytypes.com but with more categories, cool.
Thanks. I can't say I agree with most the typing on said site but the animation/representation of the cognitive functions is somewhat similar. Depending on how much time I have I might implement rendering to include socionics shapes too, but that is still up in the air.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
Somewhat similar? Pfft.
I've seen lots of descriptions which use this format to portray a personality type.
E.g. other forum posts and youtube videos such as
https://www.youtube.com/user/DaveSuperPowers/videos

I don't know where such styles of representation originated but they do make for good visual portrayals which communicate a lot of information in a simple pictures. Also, my program is non-profit educational use and I have included a clause about fair use.

Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for "fair use" for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. Fair use is a use permitted by copyright statute that might otherwise be infringing. Non-profit, educational or personal use tips the balance in favor of fair use.
 

EyeSeeCold

lust for life
Local time
Yesterday 6:23 PM
Joined
Aug 12, 2010
Messages
7,828
---
Location
California, USA
What kind of feedback are you looking for, exactly? You seem to already know what you're doing. Perhaps others can help if you elaborated on your goal of the presentation.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
The purpose of this was mainly a sanity check (as my INTP friend would refer to it) to see if the community had any obvious suggestions in terms of user friendliness that perhaps I had overlooked or any creative input that would really improve the application. It forced me to take a step back and think well yes this is obvious to me but how might someone never exposed to it try to view this.

But yes, I would not have started writing the code if I had not already had a specific idea in mind, so I see your point, but it's valuable to have other perspectives so here I am.

Also, it is satisfying to verify in a way that other people also see the patterns you are seeing. Ideally I was also looking to return just a little value to the community if only offering my own take. I figured I would post an update for 24 hours and see if anything would come of it, I feel as though I got what I needed. Thanks everyone. For all the people who read the thread and didn't post to it, that is also input to me, so thank you to anyone who read it too.

As for your question, the goal of the presentation is to hopefully enlighten some esteemed fellow students of my class while debunking a lot of bad information on the cognitive functions, personality/analytical psychology, etc. Too many times sitting in on a neuroscience journal club meeting I would find myself relating my interpretations of Jungian functions and not having anyone understanding what I was trying to say. And, I don't like that when someone tells me they have a degree in psychology and I ask them their thoughts on the subject they say "ohh that thing with the 4 letters, I don't remember mine..." (A sort of "be the change you wish to see in the world" perhaps) Also, while watching the seniors do "honors psychology" presentations at my school I thought to myself "these are nice and all, but I can certainly do much 'better'", so now I am attempting to put my money where my mouth is. The application is only a part of my presentation.
 

EyeSeeCold

lust for life
Local time
Yesterday 6:23 PM
Joined
Aug 12, 2010
Messages
7,828
---
Location
California, USA
Well the first thing that comes to mind is that there are no contextual descriptions for the groupings. If you showed these diagrams to me and I didn't know about functions or typology I would be confused as to why you are grouping them in those ways and what the functions and groups(Researcher, Idealist, Delta etc) refer to.

Perhaps you could add a feature where if you click on a bubble or group title it would give you an in-depth description? Or is this just a visual aid while you primarily speak?

As for your question, the goal of the presentation is to hopefully enlighten some esteemed fellow students of my class while debunking a lot of bad information on the cognitive functions, personality/analytical psychology, etc. Too many times sitting in on a neuroscience journal club meeting I would find myself relating my interpretations of Jungian functions and not having anyone understanding what I was trying to say. And, I don't like that when someone tells me they have a degree in psychology and I ask them there thoughts on the subject they say "ohh that thing with the 4 letters, I don't remember mine..." (A sort of "be the change you wish to see in the world" perhaps) Also, well watching the seniors do "honors psychology" presentations at my school I thought to myself "these are nice and all, but I can certainly do much 'better'", so now I am attempting to put my money where my mouth is. The application is only a part of my presentation.
I am no psychology or neuroscience major but I am aware that Jung's theories and MBTI aren't taken seriously because of lack of evidence / falsifiability. It wouldn't be a surprise to me me that your colleagues have no knowledge or interest in them. One has to start somewhere though to bring about progress, so good luck on your efforts.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
Well the first thing that comes to mind is that there are no contextual descriptions for the groupings. If you showed these diagrams to me and I didn't know about functions or typology I would be confused as to why you are grouping them in those ways and what the functions and groups(Researcher, Idealist, Delta etc) refer to.

Perhaps you could add a feature where if you click on a bubble or group title it would give you an in-depth description? Or is this just a visual aid while you primarily speak?

I am no psychology or neuroscience major but I am aware that Jung's theories and MBTI aren't taken seriously because of lack of evidence / falsifiability. It wouldn't be a surprise to me me that your colleagues have no knowledge or interest in them. One has to start somewhere though to bring about progress, so good luck on your efforts.
Yeah, I'll be talking while presenting it but I think we're on the same page as far as that goes for contextual descriptions I was thinking a bread-crumb-trail something like:
naming > viewing > grouping > filtering

where the viewing menu would allow:
-All at once
-Individual group (e.g. a temperament of 4 personalities)
-Individual personality (i.e. just render one, large personality)

the grouping menu would allow:
-Myers and Briggs (by Dominating function)
-Socionics (by Quadras) / function "sets"
-Socionics (by Clubs)
-Keirsey (by temperaments)
-Khan (by HDM Modes)
-No grouping (if only displaying individual personality)

and the naming could be a plethora of options such as:
-M and B letters (e.g. ENTP)
-Socionics letters (e.g. INFj)
-Socionics name (e.g. LIE)
-Keirsey's names (e.g. Architect)
-Primary/aux functions (e.g. NiTe)

and then all the arbitrary filters I have, too many to recall.


I haven't had time to think that through fully but I'm sure it will come to me when I sit down to figure it out. I appreciate the feedback.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
Perhaps you could add a feature where if you click on a bubble or group title it would give you an in-depth description?
I am no psychology or neuroscience major but I am aware that Jung's theories and MBTI aren't taken seriously because of lack of evidence / falsifiability. It wouldn't be a surprise to me me that your colleagues have no knowledge or interest in them. One has to start somewhere though to bring about progress, so good luck on your efforts.

I have already implemented tooltip messages (where you hover the mouse over it and it spills all the relevant info, but I don't know how detailed I would want to get if I implemented it some other way. I'm starting to think this would work much better as a web interface but I'm having too much fun in scala to stop now!

Oh and yeah nice spoiler alert lol appreciated.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
If you don't write code you may not appreciate this but the reason I'm in love with the way I have it setup in scala is that I can do things like this...
Code:
scala> Personality.foreach(println)
INTP
ENTJ
INTJ
ENTP
ENFJ
INFP
ENFP
INFJ
ISTP
ESTJ
ISTJ
ESTP
ISFP
ESFJ
ESFP
ISFJ
Code:
scala> println(Personality.filter(_.primary.attitude.equals(Extroverted)))
Set(ESTP, ENFP, ENTJ, ENFJ, ENTP, ESFJ, ESFP, ESTJ)
Code:
scala> println(INTP.inferior.process)
Feeling
Code:
scala> println(INTJ.cognitiveFunctionStack)
List(Ni, Te, Fi, Se)
Code:
scala> println(Te.pairedWith)
Fi
Code:
scala> println(Artisan.contains(ISFP))
true
Code:
scala> Gamma.foreach(println)
INTJ
ENTJ
ISFP
ESFP
Code:
scala> println(Gamma.size)
4
Code:
scala> println(Personality.groupBy(_.temperament))
Map(Guardian -> Set(ESTJ, ISTJ, ESFJ, ISFJ), Artisan -> Set(ISTP, ESTP, ISFP, ESFP), Rational -> Set(INTP, ENTJ, INTJ, ENTP), Idealist -> Set(ENFJ, INFP, ENFP, INFJ))
Code:
scala> println(Personality.fromString("FeSi"))
ESFJ

Needless to say, I'm having ridiculous amounts of fun with this.
 

scorpiomover

The little professor
Local time
Today 2:23 AM
Joined
May 3, 2011
Messages
3,384
---
No images show from the opening post.

The "code" is just println statements that just print out the MBTI 4-letter codes, i.e. no code to speak of at all.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
No images show from the opening post.

The "code" is just println statements that just print out the MBTI 4-letter codes, i.e. no code to speak of at all.
That's the beauty of it... The "code" blocks were just me demonstrating how intuitive I have made the psychology part of interface/structure, so the code is fun to play with and easy to understand (although it is in Scala which nobody seems to know around here, I will shamelessly plug it because it is a great language). If you'd like to beta test, install Scala and send me a PM!

I removed the images as they are now outdated, as I was saying it was just a 24-hour preview so I could get some feedback. The diff of the codebase since then has changed by over 1000 lines already and I'm the only developer right now.
 

QuickTwist

Spiritual "Woo"
Local time
Yesterday 8:23 PM
Joined
Jan 24, 2013
Messages
7,182
---
Location
...
So... what did you do to the pictures and why?
 

StevenM

beep
Local time
Yesterday 9:23 PM
Joined
Apr 11, 2014
Messages
1,077
---
It would be interesting to see how types collide with other types. How do types interact? Perhaps it would be interesting to see if conscious functions overlap, or when shadow personalities are projected.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
So... what did you do to the pictures and why?
I will post updated ones when the time is right!

It would be interesting to see how types collide with other types. How do types interact? Perhaps it would be interesting to see if conscious functions overlap, or when shadow personalities are projected.
For convenience I've included a filter which highlights all the "opposite types", e.g. INTP/ENTJ, ISFP/ESFJ. But I don't know how much further in that direction I can proceed at this time.
 

scorpiomover

The little professor
Local time
Today 2:23 AM
Joined
May 3, 2011
Messages
3,384
---
That's the beauty of it... The "code" blocks were just me demonstrating how intuitive I have made the psychology part of interface/structure, so the code is fun to play with and easy to understand
That's non-existent code. Or at least, so little code that doesn't actually do anything to say that something worthwhile happens. It's just an empty class that is missing the worthwhile code.

(although it is in Scala which nobody seems to know around here, I will shamelessly plug it because it is a great language). If you'd like to beta test, install Scala and send me a PM!
I get asked to look at new programming languages on a very regular basis by all sorts of people. I have to be selective.

I removed the images as they are now outdated, as I was saying it was just a 24-hour preview so I could get some feedback. The diff of the codebase since then has changed by over 1000 lines already and I'm the only developer right now.
Unless I see something that confirms what you are saying, then I have no basis by which to validate your claims. If you really have some code worth looking at, then do what everyone else does, and that makes sense to do:

Post the link to YOUR code.

BELOW that, you can post a link to Scala. But, since you already did that, it would be incredibly offensive overkill to post a link to Scala again, unless you are specifically asked to re-post the link to Scala by another poster.

So, just:

Post the link to YOUR code.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
Post the link to YOUR code.
Will you give me my eternal reward when I post it? http://youtu.be/MqiiCD7ECVk

Like I said, it has my name on it and it's not yet a finished product. I will post it publicly when I'm ready, which hopefully will not be much longer! Thank you for your patience.
 

scorpiomover

The little professor
Local time
Today 2:23 AM
Joined
May 3, 2011
Messages
3,384
---
Will you give me my eternal reward when I post it?
I don't think that I have the capability myself to grant you that.

i can only offer you that I'll be able to critique it, and see if it has any flaws. I can't guarantee that I'll spot them all. But I'm pretty competent at spotting many of the flaws that most people don't, which comes in very handy, if you want to improve the quality of it.

Like I said, it has my name on it and it's not yet a finished product. I will post it publicly when I'm ready, which hopefully will not be much longer! Thank you for your patience.
Okely-dokely.
:cool:
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
Quick update
I've got a reasonable amount updated. I still have some details that need polish but here's a quick preview. You can ignore that rightmost panel, that's old code I'm in the process of converting.

It has taken a bit of time to switch parts of the UI over from Swing to FX, but I believe the end result is much nicer. As of right now it's a mix of Swing and FX which works but is a bit of a multithreading nightmare for anyone not familiar with how the two interact, so I might wait until I've converted all of the UI to ScalaFX 8 before I release the code (or rather... if I decide to do so, that is).
ss-1_zps4f3a6c5f.jpg



Also, I've got a good start on writing the code for the new dyad model which will be draggable blocks and look something like this...
Dyads_zps233fdb57.png


As much fun as I've had with this so far, I'm considering writing a more lightweight version in the Elm language (which compiles to HTML/CSS/JS) so that it may be used and be more easily available on the web page. But in order to do that I have to step my Haskell game up to the next level (which I've also been in the process of doing for a while now).
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
A little bit more done today.
update2_zpsa7b11a6c.jpg


update1_zps71d7d16f.jpg


update3_zps32f384ef.jpg


First draft of the dyad model should be ready soon if I get enough coding time in!
 

Teffnology

Valar Morghulis
Local time
Yesterday 6:23 PM
Joined
Jan 17, 2015
Messages
244
---
Location
Grass Valley, CA (small town near Sacramento)
I am fascinated by your approach to typology and programming. FP seems out of my league and I have yet to find a concrete example of specific uses where it is far and away better. This could be the answer to a lot of the issues I see in a particular internet industry, but then Ill read a critique of FP and realize that that is why it hasn't been generally accepted yet. Curious to see your finished product.
 

scenefinale

Active Member
Local time
Yesterday 8:23 PM
Joined
Mar 29, 2013
Messages
219
---
Curious to see your finished product.

Thanks, I've finished the first draft of the Dyad model. I can't post it right now but I've sent you a PM with a screenshot. If anyone else would like to see, just send me a PM or wait just a bit longer! Thank you for your patience.
 
Local time
Yesterday 8:23 PM
Joined
Feb 19, 2015
Messages
31
---
Location
Dallas, TX
Full source code available?

I can convert to C# if you'd like (if it's not just POCO's and stubs in the business logic).

Briefly reviewed the syntax of Scala and unless you're using a lot of oddly named language specific functions/objects; shouldn't have any difficulty. I had to convert some functional python crap into F# before, that was harder than this would be.
 
Top Bottom