In that order.

“Love > Wisdom > Experience > Knowledge > Information > Data > Observation > Opinion.” – Protiguous


The Door

“A stranger can point you to the door.

A friend will help you get to the door.

A teacher will show you how the door works.

A leader will help you get through the door.

A bigot hates you for making it through the door.”

– Protiguous



“A closed door is still a door.” – Protiguous



“A loyal ass-kisser is an oxymoron.” – Protiguous


Live long, and prosper

A great man once said.

AI, Children, and God

[Original article published 2010-12-23]

Neural Networks are cool. Really cool.

My children are awesome.
They think, learn, and grow..
With sounds, words, emotions, ideas, thoughts.. more than I realize.

Every single day.

They deal with a new random chaotic world thrown at them every single day. And they make sense of it, even enjoy it. Show us new ways of perceiving the universe.

Why can’t we design a program to become alive.. Sentient?

Pentium CPUs can freak out even with simple math.

Our brains are so reliably unreliable at the neuronal level.. yet overall so quick, so accurate, and fast at recognizing patterns.
Even things we’ve never seen before.

We’ve tried neural networks.
Spike-timing-dependent neural nets (SNNs) are even cooler than regular fully connected neural networks (NNs).
But aren’t NNs just a way of brute forcing a function for a set of defined inputs?

The computational complexity of a fully connected NN.. is just staggering.


Our brains are not fully connected.. not every neuron has a connection to every other neuron.
I see this as a huge flaw in our current neuromorphic creations.

And why have layers?
Any amount of layers one chooses is arbitrary.
As I’ve observed in this life, almost everything arbitrary is ‘Not Good’.

So we create a sparse SNN..

But where do we draw this imaginary line of random ‘percentageness’?
Can we drop it down to a bare minimum?

Wouldn’t our AI get progressively ‘dumber’ until it was unable to correlate anything?
Unable to draw even the simplest of conclusions.. even with tidied inputs?

So we have to find some way to let the AI observe, learn, and grow all by itself. With the occasional teaching, of course.

Or else we’d have to feed it every bit of knowledge.
(OpenCyc.. cool project, but I don’t believe it is the right way to create an AI.)

Some people claim an AI is not possible.
Well, it [ intelligence / sentience ] either is able to be replicated / simulated / created through science or it isn’t.

If we are truly just soulless neuron-computing machines.. well, what does anything matter then?
Why create? Why paint? Why poetry? Why intuition? …Why love?

If we are the pinnacle of creation, meaning nothing better can or will be created, then what hope does humanity have to survive more than a few more thousand years more at best.

We are either magical, science-based, or God created.
I have a strong feeling it’s a bit of all three. 🙂

We can ask God to snap His fingers, but I have the feeling He wants us to work things out ourselves.

So you of the Internet: what ways are there for us to create a Star Trek Data-like artificial intelligence?

Storing knowledge RDF-like seems useful, because of the inference capability.
But how can we get this AI to learn this knowledge and use it without having to spoon feed it selected bits of information?

Not to mention ambiguity, point of view, understanding, self-awareness, and a host of other things we do not understand plaguing us.

Anyone have any ideas?

Any AI we create, we need to take responsibility for. No slaves. No war-machines.

No world-ending end-of-humanity takeovers. (An annoyingly overused scifi concept, yet still entertaining).

How do you teach something ethics and morality?
We humans haven’t even learned how to cooperate with each other..

Maybe AI can show us the logic and beauty of a future where we will truly finally have a Utopia.



A horrible racist joke made better..?

Scene: Sometime in the near future

Senator L.G. shows up to the crime scene and asks the Police Chief, “What’s happened Chief?”

The Police Chief shows him the dead body and replies, “Well, we found D.J.T. dead.. stabbed six times in the back!”

Senator L.G. replies, “I’ll be.. that’s worst damn suicide I’ve ever seen!”

Statement: This is my adaptation [into a political commentary] of a racist joke I heard a *long* time ago by someone I used to respect.

I am not advocating the murder of anyone.


Brevity is the Soul of Wit

Ever notice how trump tends to ramble on?


Meeting People..

“If everyone you meet is a jerk.. they’re probably not the jerk.” – Protiguous

SQL Server

SQL Function to convert bytes to string

-- select [dbo].[FormatBytes]( 13241322.567567, 'bytes' );
-- select [dbo].[FormatBytes]( 132413225.567567, 'bytes' );
-- select [dbo].[FormatBytes]( 1324132255.567567, 'bytes' );
-- select [dbo].[FormatBytes]( 13241322551.567567, 'bytes' );
-- select [dbo].[FormatBytes]( 13241322.567567, 'mb' );
-- select [dbo].[FormatBytes]( 132413225.567567, 'gb' );
-- select [dbo].[FormatBytes]( 1324132255.567567, 'tb' );
-- select [dbo].[FormatBytes]( 13241322551.567567, 'zb' );
-- select [dbo].[FormatBytes]( 13241322551.567567, 'yb' );
-- select [dbo].[FormatBytes]( 132413225512.567567, 'yb' );
-- select [dbo].[FormatBytes]( 132413225, 'bb' );
-- select [dbo].[FormatBytes]( 1324132253, 'bb' );	--too big!
-- select [dbo].[FormatBytes]( 132413, 'geopbyte' );
-- select [dbo].[FormatBytes]( 1324135, 'geopbyte' );	--too big!

create or alter function [dbo].[FormatBytes] ( @bytes decimal(38, 2), @toUnit nvarchar(15) = N'bytes' )
returns sysname
with schemabinding
	set @bytes = @bytes *
		case @toUnit collate SQL_Latin1_General_CP1_CI_AI

			when N'b' then 1
			when N'byte' then 1
			when N'bytes' then 1

			when N'kb' then 1024
			when N'kilobyte' then 1024
			when N'kilobytes' then 1024

			when N'mb' then 1048576
			when N'megabyte' then 1048576
			when N'megabytes' then 1048576

			when N'gb' then 1073741824
			when N'gigabyte' then 1073741824
			when N'gigabytes' then 1073741824
			when N'tb' then 1099511627776
			when N'terabyte' then 1099511627776
			when N'terabytes' then 1099511627776

			when N'pb' then 1125899906842624
			when N'petabyte'then 1125899906842624
			when N'petabytes' then 1125899906842624

			when N'eb' then 1152921504606846976
			when N'exabyte' then 1152921504606846976
			when N'exabytes' then 1152921504606846976

			when N'zb' then 1180591620717411303424
			when N'zettabyte'then 1180591620717411303424
			when N'zettabytes' then 1180591620717411303424

			when N'yb' then 1208925819614629174706176
			when N'yottabyte' then 1208925819614629174706176
			when N'yottabytes' then 1208925819614629174706176

			when N'bb' then 1237940039285380274899124224
			when N'brontobyte' then 1237940039285380274899124224
			when N'brontobytes' then 1237940039285380274899124224

			when N'geopbyte' then 1267650600228229401496703205376
			when N'geopbytes' then 1267650600228229401496703205376
	declare @prefix decimal(38, 0) = --adjust precision to your needs. Can scale higher bytes the lower precision is
			when abs(@bytes) < 1024 then @bytes --bytes 
			when abs(@bytes) < 1048576 then (@bytes / 1024) --kb 
			when abs(@bytes) < 1073741824 then (@bytes / 1048576) --mb 
			when abs(@bytes) < 1099511627776 then (@bytes / 1073741824) --gb 
			when abs(@bytes) < 1125899906842624 then (@bytes / 1099511627776) --tb 
			when abs(@bytes) < 1152921504606846976 then (@bytes / 1125899906842624) --pb 
			when abs(@bytes) < 1180591620717411303424 then (@bytes / 1152921504606846976) --eb 
			when abs(@bytes) < 1208925819614629174706176 then (@bytes / 1180591620717411303424) --zb 
			when abs(@bytes) < 1237940039285380274899124224 then (@bytes / 1208925819614629174706176) --yb 
			when abs(@bytes) < 1267650600228229401496703205376 then (@bytes / 1237940039285380274899124224) --bb 
			else (@bytes / 1267650600228229401496703205376) --geopbytes 

	return convert(sysname, @prefix) +
				when abs(@bytes) < 1024 then N' Bytes'
				when abs(@bytes) < 1048576 then N' KB'
				when abs(@bytes) < 1073741824 then N' MB'
				when abs(@bytes) < 1099511627776 then N' GB'
				when abs(@bytes) < 1125899906842624 then N' TB'
				when abs(@bytes) < 1152921504606846976 then N' PB'
				when abs(@bytes) < 1180591620717411303424 then N' EB'
				when abs(@bytes) < 1208925819614629174706176 then N' ZB'
				when abs(@bytes) < 1237940039285380274899124224 then N' YB'
				when abs(@bytes) < 1267650600228229401496703205376 then N' BB'
				else N' geopbytes'