owenSoft.net http://owensoft.net/ en http://owensoft.net http://owensoft.net/favicon.ico owenSoft.net http://owensoft.net/ Procedural Generation (programming) (Articles) http://owensoft.net/v4/item/2394/ <a href="http://owensoft.net/v4/item/2394/"><img src="http://owensoft.net/v4/photo/thumb/2398.jpg" /></a> <a href="http://owensoft.net/v4/item/2394/"><img src="http://owensoft.net/v4/photo/thumb/2399.jpg" /></a> <a href="http://owensoft.net/v4/item/2394/"><img src="http://owensoft.net/v4/photo/thumb/2400.jpg" /></a> <a href="http://owensoft.net/v4/item/2394/"><img src="http://owensoft.net/v4/photo/thumb/2401.jpg" /></a> <a href="http://owensoft.net/v4/item/2394/"><img src="http://owensoft.net/v4/photo/thumb/2402.jpg" /></a><p>Despite what online video tutorials might lead you to believe procedural generation (procgen) in video games is hard, like really hard. You might as well skip height maps and go right to the hard stuff. The hard stuff will sneak up on you quickly like enemies popping into view in a n64 game. Coincidentally the hard stuff is the same point at which most tutorials reach 10 thousand lines of code and stuck in a corner to linger forever. I am not going to go down that path, all I am going to do is outline what I have learnt over the little time I spent working on my own little procgen side project.</p><h4>Randomness and Chaos</h4><p>People seem to think of procedural generation (pg) as generating random points for use in a rendering graphics or content but soon they will discover that it is not about the randomness at all. Randomness is just a sideeffect that often leads to chaos when you are working with human beings. What you really need is constrained &quot;predictability&quot;. Randomness is the least of your problems. Predictability is why so many tutorials use <a rel='external' href='https://en.wikipedia.org/wiki/Simplex_noise' title='simplex/perlin noise'>simplex/perlin noise</a>. Simplex noise gives predictable results in a set range between -1..to..1 which you can use to produce predictable procedural content that only &quot;seems&quot; random. Randomness is NOT what you want. The goal is to have controlled space that appears random - not chaos.</p><h4>Avoid simulating the real world</h4><p>Some will attempt to create something like what was done in No Man&#039;s Sky or Minecraft but fail to understand that the real world does not work like a computer. No matter how much code you write or fast the code is you cannot simulate everything in the real world. And even if you try, it is going to take you a really, really, really long time just to get the basic stuff in place. You are gonna have to decide what is important to simulate and what you will simply leave to the imagination. Game consoles and computers nowadays have upwards of 4 gigs of RAM and they still have to resort to trickery and shaders. It may seems like your favorite game is a true masterpiece but it is mostly smoke and mirrors once you figure out how it all works. This figuring out takes time - many dead bodies liter the highway.</p><h4>Picking a noise function</h4><p>A good noise function needs to be fast and is often complicated to code so it is best to stick with simplex noise or something similar. Tutorials often state that you can use any noise function you want but you want to avoid functions that are &quot;random&quot; as mentioned earlier - you want to know what result you are going to get. And you want to be able to repeat previous results so that you can test different outcomes in different scenarios.</p><h4>Draw distance, view space, LODs, cache and culling</h4><p>You will be tempted to fill your screen with tonnes of flowers and trees and such early on until you realize that your computer cannot keep up with all the information. The world is full of information, more information that you can imagine. Most pretty video games that you see being published today are using all sorts of trickery to render the information you see. It is not only down to the skill of the program but Art, RAM and disk read speed. The level of detail (LOD) of the environment has alot to do with it as well. Some games have asset pipelines that auto-generate thousands of models just for one scene and then stream them in seamlessly. Other games store <a rel='external' href='https://www.youtube.com/watch?v=BiQCz2NjPR8' title='entire static sections'>entire static sections</a> of the game world on disk or in memory during loading instead of rendering it all in real time. You will have to sacrifice something depending on your situation. If you cannot pay 10,000 artists then you might want to keep your scope down to something that you can mange.</p><h4>Distractions are everywhere</h4><p>Feature/Scope creep is worse in procedural generation. Everybody wants everything as the case was in No Man&#039;s Sky. You think you can program every leaf on a plant blowing in the wind on a moon of Saturn but how much time do you have in the day? Not allot. And you will see someone using a cool shader in Unity and you will be like: &quot;I want that in my code too!&quot;. Avoid the temptation. That stuff will only lead you down a road of pain and frustration. That fancy shader is probably using up 90% of the available CPU/GPU cycles - leaving nothing left for any kind of game play. It took me almost a year to get wave animations on bodies of water. Mostly my own ignorance because it just came to me one night but the key lesson is being able to notice when a &quot;nice-to-have&quot; feature is wasting you productive time and being able to leave it alone and move on to something more important.</p><h4>Keeping track of everything</h4><p>It is good to be generating lots of stuff but you will come to a point where you need to know where something is or was and some kind of key/id to identify it. There might be objects that are longer needed such as dead enemies and trees that you have already cut down. The solution that I have is to keep track/save the xyz point at which I generated the object. In my system I try to ensure that only one thing is generated at every point in the world. So even if the object has moved to another spot I can check the object listing to see if something with an matching origin point has already been generated or if I need to generate it for the first time. This only applies to things that can be killed or have AI movement. Most things would otherwise not need to be tracked.</p><h4>When the going gets tough</h4><p>While writing your #procgen thing one of the first challenges you will come up against is how to place stuff in the world without them overlapping against each other, floating trees, planets colliding and caves - Oh god caves! This is what alot of online tutorials fail to tell you: if you start by using hieght maps you are going run into a wall where you cannot do caves and you end up putting too much data into cache. Loops, in loops, in loops then you hit the point when you try to solve it with threading - anytime you see some one start using threading you know that it is going to be a roller coaster down the rabbit hole. Avoid threading unless it is the last thing you implement - its a rabbit hole - it will not help. If the code is too slow to run on the main thread at such an early stage then you are doing too much. Stop - hammer time.</p><h4>Conclusion</h4><p>In the end procgen is not about replay-ability or creating lots of content or infinite worlds or pretty graphics or whatever people are hyping nowadays. Procgen is (at its root) about maintaining state of a complex system. You can generate a billion pieces of content but if you cannot put them together in a cohesive system then you are basically just generating garbage at which point you might as well hand make the level and be done with it. You can only play a game that you finish making. Expect to spend a great deal of time figuring out how to keep the state of all the stuff you are generating. Anyway good luck and happy proc-gen-ing!</p><h4>Further reading</h4><p><a rel='external' href='https://www.youtube.com/watch?v=h-kifCYToAU' title='A Behind-The-Scenes Tour Of No Man&#039;s Sky&#039;s Technology'>A Behind-The-Scenes Tour Of No Man&#039;s Sky&#039;s Technology</a></p><p><a rel='external' href='https://www.youtube.com/watch?v=twTegheoF1E' title='How Grids and Patterns Work Together'>How Grids and Patterns Work Together</a> by Eric Broug</p><p><a rel='external' href='https://www.youtube.com/watch?v=sCRzxEEcO2Y' title='Continuous World Generation in No Man&#039;s Sky'>Continuous World Generation in No Man&#039;s Sky</a></p><p><a rel='external' href='https://www.youtube.com/watch?v=HhyyUiYQolA' title='Reset Button: The Biggest Game Ever'>Reset Button: The Biggest Game Ever</a></p><p><a rel='external' href='https://www.youtube.com/watch?v=O9b-rtrcPEA' title='Math Encounters -- Beyond Animation'>Math Encounters -- Beyond Animation</a> Ken Perlin (Presentation)</p><p><a rel='external' href='http://alanluo.com/procgen/midterm.html' title='Generating Art with Code'>Generating Art with Code</a></p><p><a rel='external' href='https://www.youtube.com/watch?v=WumyfLEa6bU' title='Practical Procedural Generation for Everyone'>Practical Procedural Generation for Everyone</a> May 2017<br /></p> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2394/#comment">Post your comments on this article</a></p> 2017-09-12 18:49:53 Donot sit (And the Sign Says..) http://owensoft.net/v4/item/2393/ <p>For display purposes only</p> <a href="http://owensoft.net/v4/item/2393/"><img src="http://owensoft.net/v4/photo/thumb/2397.jpg" /></a> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2393/#comment">comment</a></p> 2017-09-06 19:13:39 Summer CDs (Music) http://owensoft.net/v4/item/2392/ <p>I only got 5 new CDs this summer as they get harder and harder to find but any I got them cheap. Left of the middle is clearly the best of the bunch even though I had previously ran it into the ground many moons ago in mp3 format. Billy paul was not so bad along with Blue Magic.</p><p>The new kids on the block music did not age well at all.</p> <a href="http://owensoft.net/v4/item/2392/"><img src="http://owensoft.net/v4/photo/thumb/2395.jpg" /></a> <a href="http://owensoft.net/v4/item/2392/"><img src="http://owensoft.net/v4/photo/thumb/2396.jpg" /></a> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2392/#comment">comment</a></p> 2017-08-29 19:35:20 Bang bang bang (Logbook) http://owensoft.net/v4/item/2391/ <p>Everybody needs a hobby. In a world with so much to do its not surprising that people will gravitate to anything in order to past the time like a rouge asteroid flying through space only to become entangled by a star. We all need something to love. Most people do not even realise the hobby that they have and most other people could care less. Eventually everyone comes to terms with what is real as opposed to what they dream about or what they hope for.</p><p>The depth and circumference of our &quot;worlds&quot; vary from time to time just like our hobbies. Who can really know what you are thinking about right at this moment or tomorrow? Everyone spends thier time creating little worlds in which they live. Sometimes we exist in other people&#039;s worlds. Sometimes worlds spiral around each other in a delicate balance. Other times worlds collide and destroy each other forever.</p><p>It has all been done before - everything. The only thing you can hope to achieve is that knowledge that you had some fun. Because you never know. Tomorrow you might become a different person with different hobbies, living in a different world and the things you once hold dear will be gone away.</p> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2391/#comment">make a comment</a></p> 2017-08-09 15:45:21 Old Hardware (Technology) http://owensoft.net/v4/item/2390/ <p>I have been cleaning out my closet and dusting out the old PC and apple computer that I have found/kept over the years. Most of it merely for backup purposes. Too old to be useful but merely a display of the state of the art at the time when I was transitioning between high school and college in 1998 there abouts.</p><p>The IDE harddrive in the 486 still works although harddrives in those times were loud even with it 100+ mb of storage it hummed to life as I connected it to my current PC. The Apple computer needs a boot floppy disc because I hard crashed it experimenting at some point in the past but I am sure that it is functional once you can find the means to create a bootable disk for a Macintosh of that age. </p><p>The 486 (could be a 386 I am not sure) is easy to open but the Apple requires a special long bit when I borrowed and one point to get it open but now I cant seem to find someone that has the bit.</p> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2385.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2386.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2387.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2388.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2389.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2390.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2391.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2392.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2393.jpg" /></a> <a href="http://owensoft.net/v4/item/2390/"><img src="http://owensoft.net/v4/photo/thumb/2394.jpg" /></a> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2390/#comment">comment</a></p> 2017-08-01 12:45:50 Writing new code so that you can write old code faster (programming) (Articles) http://owensoft.net/v4/item/2389/ <a href="http://owensoft.net/v4/item/2389/"><img src="http://owensoft.net/v4/photo/thumb/2384.jpg" /></a><p>Recently I came up a situation while programming which required me to choose between passing a reference pointer to a structure or building a loop. Usually I would avoid pointer referencing but in this case I found that deferring the loop structure into another function ment that I could centralize all my loops into one place - speeding up my dev cycle.</p><h4>Its not all wine and roses</h4><p>This of course ment that I have to pass pointers to a shared structure which is a whole other can of worms involving putting things in a bucket and making sure that the bucket did not overflow or become randomly de-referenced at runtime.</p><p>But when I look at it I would could escape one headache for a lesser headache and I would come out with a net positive in the end.</p><p>Let me explain a little more. I originally had this;</p><pre><code> tree_list = get_my_stuff( &#039;tree&#039;, x, y, z ); foreach( tree_list as item ) { draw_tree(item); } </code></pre><p>This worked fine until the grouping of the list got more complicated;</p><pre><code> tree_list = get_my_stuff( &#039;tree&#039;, x, y, z ); foreach( tree_list as item ) { draw_tree(item); } grass_list = get_my_stuff( &#039;grass&#039;, x, y, z ); foreach( grass_list as item ) { draw_grass(item); } </code></pre><p>I needed more complicated things that did different tests and I need to do frustrum culling and many different draw_XXXX() functions needed to be created and called in different places. I certainly could not continue down the road as I was heading. In programming you always have to be looking for a better faster way of doing tasks and even if the code you are writing actually works you have to be able to balance you present success with future headaches;</p><pre><code> tree_list = get_my_stuff( &#039;tree&#039;, x, y, z ); foreach( tree_list as item ) draw_tree(item);</p><p>grass_list = get_my_stuff( &#039;grass&#039;, x, y, z ); foreach( grass_list as item ) draw_grass(item);</p><p>forest_list = get_my_stuff( &#039;forest&#039;, x, y, z ); foreach( forest_list as item ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree_list = get_my_stuff( &#039;tree&#039;, x, y, z ); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach( tree_list as item ) draw_tree(item);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grass_list = get_my_stuff( &#039;grass&#039;, x, y, z ); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach( grass_list as item )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;draw_grass(item); } </code></pre><p>Even with clever code shortening skills you probably can see that no good will come of this. The actual code involved in draw_tree() is even more complicated that what can be shown here. Where drawing a tree I have to figure out the distance, height, position on the ground and a whole bunch of other values which are different for everything that I want to draw or hide.</p><p>I don&#039;t know if this a new trend but I was looking for ways to avoid deep looping and stumbled across this <a rel='external' href='https://stackoverflow.com/questions/38399334/how-can-i-avoid-for-loops-with-an-if-condition-inside-them-with-c' title='question on stack'>question on stack</a> in which the programmer is trying to back-port modern high level shortcuts to C++. Clearly ignorant to the fact that it&#039;s reduces code flexibility. But what&#039;s really funny is how he &quot;feels&quot; that he is doing something wrong by using a for loop with a condition. Lol</p><p>Could we be mind fucking these knew programmers into thinking that code style, frameworks and tab vs spaces is more important than actually writing simple and efficient code? </p><p>But anyway back to the issue at hand. The code though simple and clear was only going to get more nutty as time went by and I had to be copy and pasting all the tree drawing code every time I wanted to draw a forest, meadow, savanna or bush. What to do?</p><h4>In comes global lists and reference pointers</h4><p>So I figured I should start using one list for each thing that had a specific draw_XXXX() function. If I had trees - no matter where there were I would just put them into one list and draw all of them in one big loop;</p><pre><code> get_my_stuff_loop( &amp;tree_list, &#039;tree&#039;, x, y, z );</p><p>get_my_stuff_loop( &amp;grass_list, &#039;grass&#039;, x, y, z );</p><p>get_my_stuff_loop( &amp;forest_list, &#039;forest&#039;, x, y, z ); foreach( forest_list as item ) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get_my_stuff_loop( &amp;tree_list, &#039;tree&#039;, x, y, z ); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get_my_stuff_loop( &amp;grass_list, &#039;grass&#039;, x, y, z ); }</p><p>foreach( tree_list as item )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;draw_tree(item); foreach( grass_list as item )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;draw_grass(item); </code></pre><p>To a novice coder this might seem like a genius plan but its not obvious that I have to do more work in the background to make sure that the get_my_stuff_loop() function run out of control and crash the system. Previously I could because of the nature of the individual loops I could tailor each list to the specific needs of the items I wanted to store in them. e.g. forest[4]. tree[20], grass[1000]. By making a generic loop I loose the control I had. Now I have to have a generic list array that can store every possible type of object. list_array[2000]. Which means that anytime I create something new I will have to allocate a big chuck of memory to it.</p><p>Even more so certain types of objects behave differently at certain distances like grass can be hidden when at a distance. All these issues were easily managed in the individual loops because I knew exactly what and where I was drawing so I could skip things that I felt no one would notice. I could skip every second tree ( 2 % i == 0) if I felt that they were far enough away that no one would notice.</p><h4>Conclusion</h4><p>With the new code I will need to send more parameters so that I can try to implement some of my old tricks;</p><pre><code> get_my_stuff_loop( &amp;the_list, type_name, x, y, z, level_of_detail, density, parent_id, x_size, y_size, z_size ); </code></pre><p>But its not all bad right? I can code up new objects at a rapid pace with almost half the code. I swapped out simplicity for quicker iteration while wasting a bunch of memory on big generic arrays. Hopefully everything is able to fit in RAM when I am done coding. The key take away is that in the initial phase I kept my structures as simple as possible so that I could work on the difficult features inside the draw_XXXX() functions. Once those were mastered I moved to the higher level functions and at that point I needed to ramp up the pace at which I coded. The only way I could do that is by hiding as much of the nitty gritty as possible. Lets hope I do not hit up and too many edge cases.<br /></p> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2389/#comment">Post your comments on this article</a></p> 2017-07-18 09:50:27 Summer Snow (Logbook) http://owensoft.net/v4/item/2388/ <p>The man that knows something knows that he knows nothing at all. Everyone is secretly hoping they win the lottery in one way or the other. There is a hidden need or want for something inside of everyone. If its a need or a want is always the point of confusion. I just want to get through the day without hydroplaning into an unmovable object at 110 kmph. Life is all about physics - I have said this before. You are here, we are here until we are not. No use talking about what you plan to do next year when there are perfectly good things to talk about right now - in this instant. Hold your breath and feel the pressure build up inside you chest.</p><p>I was programming some stuff which I do for work until I came upon a problem that I could not solve by just being clever. These problems are the worse kind because I know I am no good and my limits are as clear as a brand new glass windows. The sun in the sky knows how I feel. I stare blankly at the wall hoping that a stroke of genius will free me from ignorance. I might have to just leave the problem and move until something else. Why stress yourself out?</p><p>Somethings I just have to avoid completely for my own sanity. I can - not - deal with - not even - one more addiction. I wont take your expensive fish fry ticket not because I do not like fish or do not want to support your meaningless cause but I can see far down the road and I am not about that life of suffering. Delayed suffering is pretty much the worse things you can do to someone. Good intentions aside I would rather say no right now that supper the disappointment which is certain to come down the road. Of course you have to spend you time doing something.</p> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2388/#comment">make a comment</a></p> 2017-07-12 15:27:56 Scifi movies, AI, VR and pandering to layman (Articles) http://owensoft.net/v4/item/2387/ <a href="http://owensoft.net/v4/item/2387/"><img src="http://owensoft.net/v4/photo/thumb/2382.jpg" /></a> <a href="http://owensoft.net/v4/item/2387/"><img src="http://owensoft.net/v4/photo/thumb/2383.jpg" /></a><p>This is a age of broad media consumption. Every <a rel='external' href='https://www.merriam-webster.com/dictionary/layman' title='layman'>layman</a> has a computer in their pocket that they can use to send pictures of food to other computers half a world away and yet still science fiction movies are getting stupider by the day.</p><p>Let&#039;s start with movies like Ex Machina (2014); this movie starts out as hero worship - you have this guy who is supposed to be a super genius building sexbots in his designer palace except hes just a mysterious asshole. After that everything is telegraphed. The new trend in science fiction movies ‎of today is to skip the science fiction and go straight to the magic and paranormal. The movie does not explain how anything actually works or even tries to create a believable world - even if the systems are not plausible - at least the movie should create something on which the viewer can ponder. Ex-Machinima gets rid of the entire notion of explaining how anything works right off the bat - shoves it into the pantry. What is left is a empty shell which you have to kind of fill in with assumptions. You assume that there is some kind of power source and you assume that something is managing it. Sometimes dreams are better than scifi movies - this is one of those cases.</p><h4>No need to explain any of the fiction</h4><p>The audience simply assumes everything works as if watching Harry Potter. This type of media appeals to a broader audience which I have dubbed the &quot;expert layman&quot;. The movie skips logic altogether and goes straight to magic. Magic in the past was normally regulated to the harder stuff like food processors in Star Trek or Teleportation.. These fictional things are kinda impossible but the way they looked and operated where clearly explained in the context where they are shown - they had a structure on which you could imagine it actually being real.</p><p>Nowadays, just like how virtual reality (VR) was supposed to revolutionize education and gaming back in 2015 (some how) solely by the fact that it is on your head, but yet - still no revolution. Remember tablets in schools? &quot;it is gonna be, good just wait!&quot; they said - potential can sell anything. VR has a tonne of potential but none of it is based in reality. It is all virtual potential. Everyone is either a <a rel='external' href='https://www.youtube.com/watch?v=IhP3J0j9JmY' title='believer'>believer</a> or part of a unpaid global marketing department.</p><p>Years later VR is still figuring itself out just like artificial intelligence (A.I.). Now people are calling basically anything &#039;cloud based&#039; = artificial intelligence. Gmail is a cloud AI that reads your email - yes its true - eventually it will write you emails and letters to your girlfriend as well. Magic! Google will figure out a way! Fake news will be a thing of the past. Companies with <a rel='external' href='https://m.youtube.com/watch?v=BaufJcqYcYg' title='cloud platforms/A.I.'>cloud platforms/A.I.</a> are begging developers to use their proprietary API so they can &quot;lock-in&quot; early. Big data turns Cloud turns Virtualization turns Search - whatever draws the biggest crowd. It is all marketing. No one knows anything, everybody is referencing a press release or something they heard on social media. I am not gonna knock a persons hustle but the least you can do is drop something more than pigeons and crumbs.<br />‎<br />Half the people on the A.I. train say its going to kill us, take away <a rel='external' href='https://pippinbarr.github.io/itisasifyouweredoingwork/' title='our jobs'>our jobs</a> and the other half say its going to drive our cars and be our friends. All of these people are going off the base assumption that it actually works. Getting A.I. to work is the problem no one wants to think about because the only people talking about it are marketing people (who want to sell us something) OR expert layman that only really want better Netflix recommendations. <span class="h"><em>Too many people assuming A.I. will just &quot;work&quot; is the problem.</em></span></p><p><span class="h"><em>&quot;The 4K revolution is closer than you think&quot;</em></span></p><p>The problem is further exasperated because news and social media no longer create news in the traditional sense but more so create &quot;buzz&quot;. Buzz works as it sells advertisements and keeps people coming back. But one bottle of buzz is not enough. Buzz creates buzz that creates buzz. The audience becomes so overwhelmed with the titbits of the same information coming from different directions that they figure that some/all of it must be true right? Except it all gets reduced to <a rel='external' href='https://www.youtube.com/watch?v=insM7oUYNOE' title='regurgitation'>regurgitation</a>, <a rel='external' href='https://vimeo.com/139094998' title='remixes'>remixes</a> and assumptions. People forget where the original source started and even the original source starts to assume that everybody else must be doing something if they are talking about it so much. But if you look into it no one is doing anything except creating buzz and waiting for new buzz to happen.</p><p>[bu]A big Non-Opinion Soup[/url]<br />I refer to the expert layman in the context of the average joe who has been exposed to the internet, social media, and more importantly &quot;buzz&quot;. The media gets a bit of information and runs with it, asks a bunch of people their opinions, then asks another bunch the opinion they have of the first set of opinions that they previously received. All this is the great consumer <a rel='external' href='https://en.m.wikipedia.org/wiki/Echo_chamber_(media)' title='echo chamber'>echo chamber</a>. This cycle goes around and around until people start quoting themselves in articles they wrote 5 years ago because the same people are making the same assumptions about the same press releases - everyone is working on old information. So what is the expert layman to do? Simply retweet, re-like, re-post and remix the same stuff because all these people cannot possible be wrong, right? Every one loses their point of reference. Lost amongst the buzz.<br /><span class="h"><em>What a time to be alive! 6 terroflops, 12 gigs of memory = Minecraft 4k</em></span></p><p>Of course they are not wrong, no one is, because they are just providing their opinion and everybody is in an &quot;opinion soup&quot; that is in a pot so big that one knows if its ready to take it off the fire. Eventually opinions become sorta facts just like how smartphones are sorta &quot;computers&quot; but all people do on them are play terrible games, and damage their eyes. Yes your smartphone is fast but at what? These are the difficult questions that need answering.</p><p>This is thought process of the expert layman; &quot;this thing is amazing to me so it must be incredibly difficult to do&quot;. This results in a feed back loop of people being amazed and dumbfounded at the same time. It is like seeing a magic trick and never being able to find out how it actually works. So the trick is amazing every time you see it and you never move on to other things. The expert layman gets stuck in a VR, AI, VR, AI, VR, AI, loop and it just keeps <a rel='external' href='https://m.youtube.com/watch?v=KkqC_DSZZNY' title='going and going'>going and going</a>. Because of this loop the tech industry seems to be stuck in a pothole trying to satisfy this buzz.</p><p>Take an example 3 cars driving down the road at 50 kmph. Are 3 cars better than 1 car going at 150 kmph? Do you really want to go fast or do you want to feel like you are going fast?</p><h4>Conclusion</h4><p>Eventually we have to stop beating dead horses and move on to other things. We need new tech, new software and new thinkers. Pandering to the consumer masses so that we can sell 20 million iphones every year will only get us so far. We cannot get caught in the same cycle of waiting for that new thing that you need to buy, that <a rel='external' href='https://www.youtube.com/watch?v=uQ-XcWCDfmE' title='4k revolution'>4k revolution</a>, 3d movies, mixed reality and a obsession with making video <a rel='external' href='https://www.youtube.com/watch?v=xgaUt_QstlY' title='games crisper'>games crisper</a>, sharper and prettier. The last time I saw a smartphone that was an improvement was when they added <a rel='external' href='https://www.youtube.com/user/videogamedunkey/search?query=resolution' title='accelerometers'>accelerometers</a> which was 5 years ago! We have come full circle to the point where they are actually removing features that we had for decades! The only true way to change and be better is to spend time solving problems instead of making new market segments for old problems.</p><p></p> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2387/#comment">Post your comments on this article</a></p> 2017-07-12 15:26:27 Only the strong survive (Logbook) http://owensoft.net/v4/item/2386/ <p>There are some who would rather be loved, needed and depended on to give a love they cannot give. Than for them to be lonely. I just want‎ my days to go by easily. The world is filled with too much stress. There is no sense in creating mini struggles within ourselves. Though some might find it entertaining but I would rather watch the wind blow the leaves around than be a leaf blowing in the wind. Chaos is only fun while you have the strength to fight it.</p><p>I bought some CDs from a man selling used stuff by the side of the road - Music CDs. When buying anything used in Jamaica you have to wonder if they were stolen from someone with awful taste in music. They were cheap so I bought a couple that had the least scratches that could find. Old music CDs are like finding old pants that still fit; you know you shouldn&#039;t be wearing them but they will never let you down.</p><p>I bought a really expensive appliance recently because I became passionate about getting something good (watching online videos, doing research) as opposed to getting something affordable and common. I become annoyingly passionate about stuff at times but I get through most time, sometimes not. I have to pump my brakes because I fear that my passions are a ship made only to crash upon the rocks of disappointment. But I push through because when it comes down to it without fear, experience, drive and passion there is nothing. Bueaty and Nonsense.</p> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2386/#comment">make a comment</a></p> 2017-07-02 17:21:28 Dancehall and the era of the Summer Song (Video Blog) http://owensoft.net/v4/item/2385/ <p>The first time I remember such a thing as a summer song was back in 2009 when Ding Dong dropped &quot;Holiday&quot;. Many have been released since then but as far as I remember it all started with that first summer song. Enjoy my list and you suggest any that you remember that I might have forgotten in the comments.</p><p>Ding Dong Holiday - 2009<br /><a class="ebv" id="w6MtzUCl4vM" href="http://youtube.com/watch?v=w6MtzUCl4vM" ><img src="http://i.ytimg.com/vi/w6MtzUCl4vM/hqdefault.jpg" /></a><br /><br />Vybz Kartel - Summertime - 2011<br /><a class="ebv" id="CITU4KH93aU" href="http://youtube.com/watch?v=CITU4KH93aU" ><img src="http://i.ytimg.com/vi/CITU4KH93aU/hqdefault.jpg" /></a><br /><br />I-Octane - &quot;Happy Time&quot; - 2013<br /><a class="ebv" id="7Fv6cQOX32U" href="http://youtube.com/watch?v=7Fv6cQOX32U" ><img src="http://i.ytimg.com/vi/7Fv6cQOX32U/hqdefault.jpg" /></a><br /><br />Vybz Kartel - Summer 16 - 2016<br /><a class="ebv" id="WLnPTJIJcyE" href="http://youtube.com/watch?v=WLnPTJIJcyE" ><img src="http://i.ytimg.com/vi/WLnPTJIJcyE/hqdefault.jpg" /></a><br /><br />Beenie Man - Lets Go - 2011<br /><a class="ebv" id="Pnr7dLsN58c" href="http://youtube.com/watch?v=Pnr7dLsN58c" ><img src="http://i.ytimg.com/vi/Pnr7dLsN58c/hqdefault.jpg" /></a><br /><br />Vybz Kartel - Party - 2015<br /><a class="ebv" id="piwkqKzxvB4" href="http://youtube.com/watch?v=piwkqKzxvB4" ><img src="http://i.ytimg.com/vi/piwkqKzxvB4/hqdefault.jpg" /></a><br /><br />VYBZ KARTEL - Miami Vice [Episode] - 2015<br /><a class="ebv" id="Jc4Yznjqgnc" href="http://youtube.com/watch?v=Jc4Yznjqgnc" ><img src="http://i.ytimg.com/vi/Jc4Yznjqgnc/hqdefault.jpg" /></a><br /><br />POPCAAN - RAVIN<br /><a class="ebv" id="g_NA9h_o460" href="http://youtube.com/watch?v=g_NA9h_o460" ><img src="http://i.ytimg.com/vi/g_NA9h_o460/hqdefault.jpg" /></a></p> <p><strong>by owen</strong> <a href="http://owensoft.net/v4/item/2385/#comment">make a comment</a></p> 2017-06-23 09:18:20