The Dock on a Mac… My Wish…

Share this:  

Just me stopping for a moment to express a simple desire…(ahem o’ Apple!)… If you have a multi-monitor setup (I have two: my Mac itself, and another to its left), moving my mouse around a certain part of the screen (no clicking), causes the dock to move from one monitor to the other.

Some people may like this. I do not. I really just want my dock to stay put on the right hand screen.

If Apple would just add an option in the Dock preferences to lock the dock the the current screen that would be awesome. It could be deselected as a default so that everyone who thinks the dock works fine would be happy, and people like me could make sure that the dock was on the screen we want, and check that option and no longer have it popping around now and then from screen to screen.

Current Progress on ‘The Game’

Share this:  

A lot has happened since my last post here:

  • I’ve written a crude SQLite wrapper in Objective C (separate project). And have begun work on a little program that will read words out of a text file and add them to a table in an SQLite database. The column containing the word will be indexed so hopefully there will be a quick lookup!
  • I’ve managed to download a text file that is basically a list of English words (not a dictionary since there are no definitions).
  • I’ve started going through this file removing words that are not applicable (based on the game’s rules). This is going to take awhile. There are a lot of words in this list!
  • I am planning on having another column in the table where the word will appear with all its letters in alphabetical order. This column will be indexed too. This is all part of a crazy idea I have as part of an algorithm for the computer to quickly pick words to form based on the letters it currently has… This is for when the user is playing the computer or the computer is playing itself … Attract Mode.
  • I’m still not done with this little program to build my SQLite database table.
  • Back to work I’ve done on the main Objective C game code…
  • The main game menu is up and running (though at this point only the Create Game button is working).
  • Ive got a general purpose game menu button selection method which purpose is to play a button select animation, which, when done running, will then call the proper method to run based on whichever button was selected. “Part” of the SpriteKit animation is playing a button “click” sound. The sound file being played right now is just a placeholder sound until I can create/get the final sound file.
  • I’ve now gotten an Apple TV version of the project working! Yay! The projects are different, but both iOS and Apple TV projects are pointing to the same source code.
  • I’ve figured out how to run my app in Xcode on my actual Apple TV box that is in the same room! The room where my home office is, is also my wife and I’s den.
  • There is specific code that is called only when running on  Apple TV, iPad, or iPhone.
  • But there is a lot of common code that is run by every platform.
  • Speaking of Apple TV specific code, I was able to get game controller code working for it (at least for the Siri Remote). So, for now, I can use the Siri Remote to navigate through the game menu and select an option.
  • I’ve added to the existing data structures for tile spots and buttons information for how to handle which element should be navigated to based on how the user uses their game pad on their Siri Remote. I’ve only been able to test it with the menu buttons so far and it seems to work pretty good.
  • There is a SpriteKit animation associated with changing the highlighted menu button. Part of it plays a sound file (think of the sound playing as you move for movie poster to movie poster in Apple’s Movie app). The sound right now is just a placeholder sound as well.
  • I would like the animation above to include the tilting of the highlighted item like the Apple Movie and TV apps and the Netflix app does. I plan on using the SKAction they have now to do a “warp” of the sprite. We’ll see how that goes.
  • I’ve added code to create, display, and run a game timer. The player will get 3 minutes for their turn.
  • This game is a multi-player game. And hence it needs functionality coded in to provide that functionality. At this point, I am planning on using Apple’s GameKit to implement these features. Specifically, the features that were mentioned in the talk “What’s New in Game Center” that Megan Gardner gave at the WWDC 2016. Specifically the features around the usage of the new GKGameSession class. You can watch the video of this presentation here. I watched this video a couple months back during the process of doing some initial investigation on what I would need to do to get this game to be a multi-player game. And I found it’s content exciting. What she talked about seemed to be able to do everything that I wanted without me having to compromise anything that I wanted in the game functionality!

Current Problems and Road-Blocks:

  • Sound on Apple TV version of app going away.
    • Initially, this worked fine. But then it suddenly stopped working.
    • When I’d leave the app and go into another app, their sound effects still worked just fine.
    • I had not turned the volume down on my Apple TV.
    • I checked the code just to make sure that I had not somehow removed the code that played the sound effect. I had not.
    • When running the iPad version of the game, it still plays the sound effect (shared code).
    • This problem is not at the top of my list, but it is annoying and it will need to be figured out eventually.
  • The Big Problem: Finding GameKit documentation including code examples (especially using the GKGameSession class).
    • This problem is causing a lot of anxiety and frustration for me. I can imagine that its doing/done the same for other iOS/macOS/tvOS developers out there too. I (like them) would rather be solving problems in my game itself, not having to be an API forensic anthropologist untangling a confusing web of sparse clues! And I’m really reluctant to use one of my Apple Developer support tickets for something like this which (in my opinion) is really Apple’s fault.
    • Maybe I’m blind in one eye and can’t see out of the other, but Apple does not provide any on-line code examples for GameKit/Game Center. None. If its out there, its hidden really good!
    • The API’s syntax documentation is very sparse.
    • If you look up a class such as GKGameSession, in addition to the sparse documentation, and no examples, it says it Deprecated! Really??
    • Okay, they do mention on the page that it was deprecated for iOS 10.0, macOS 10.12, and tvOS 10.0. iOS 10.0 came out on September 13, 2016 (just found that out now). If this is true, this means that all these cool, new, and sexy features did not even last 6 months. I don’t know, that is hard for me to believe.
    • When I saw this I thought “well, there has to be a presentation in 2017 or 2018 (this year) where they mention the new changes and which classes have been deprecated.” There were none. In fact there were no new presentations on Game Center/Kit since 2016.
    • Okay, it seems that Apple gave GKGameSession the boot. If it did, it was real quiet-like. The 2016 presentation that that Megan Gardner gave mentioned at least one class that was being deprecated and how they were taking away the Game Center app. So, it would make sense that if as of September 13, 2016, that the GKGameSession class was deprecated, that at least there would be a presentation during WWDC 2017 covering any changes… and why those changes were made… Or perhaps at least a web page explaining all this?
    • I’ve seen in various spots on the web people asking questions about GKGameSession. Rarely getting any answers. And certainly none from Apple (even on their developer forum).
    • I can’t find any how-to tutorial info on the web on the subject. Lots of info on stuff like SpriteKit though.
    • No books covering the subject (at least not recently covered).
    • No courses in Lynda.com or Udemy.
    • I did find some stuff of interest out on Github that I am looking into. But it is definitely not something a dev could easily figure out how to piece it all together. What interests me is where did they get some of the pieces of code to help them fit it together? Somewhere that I don’t know about at least!
    • To be honest, I did find some code examples and a tutorial on using GameKit on raywenderlich.com. But this tutorial was created in 2014. I want to use the newer features of 2016.
    • Well, I have several lines of inquiry for this problem. Mainly involving an attempt to contact certain people in hopes that they can connect me with folks who DO know the answers to these questions. Wish me luck!

Well, I went on a lot longer than I expected in this post! If you know where I can find the information I’m looking for, any help would be greatly appreciated.

A Fun Experiment with Swirling Text

Share this:  

I’ve had, for awhile, various ideas for doing the animation of text. Imagine (if you will), your user clicks on something on the page, and this cool animation of swirling letters happens, and the letters come together to for some paragraphs of text.

Then your user clicks a DONE button, let’s say, and those same paragraphs explode into a swirl of letters which now fly apart and disappear off the edge of the screen.

A few months back I started working on some code to do this. What I got done was JavaScript code that takes the text in the paragraphs and puts a special SPAN tag around each character in these paragraphs, gives them a special class name, and a unique id.

That is as far as I got.

Well yesterday, I decided to pick up this little project again and I surprisingly got a working example! Usually stuff like this takes a bit of debugging before it starts to cooperate with me!

Below, embedded on this blog post is the Pen that I created in Code Pen to do this.

It is just an experiment. But I think a successful one! Try clicking the buttons in it to see it in action. I designed it on my iMac and made no attempt to make it work perfectly on a mobile device. Again, it is just an experiment.

Anyways, enjoy!

See the Pen Formatting a Paragraph for Text Animation by Orville Chomer (@orvilleChomer) on CodePen.0

Note that the DIV with the red border has overflow set to hidden. This is to keep crazy scroll bars from appearing while letters are flying around.

iOS Game App Dev Log Entry # 2

Share this:  

For this game, I am using the layout of Scrabble on the iPhone and the iPad as a frame of reference. I am not copying it exactly. BTW, this is not a Scrabble knock-off! It is a word game though, and I’m sure it will be something you would find under the “Word” category in “Games” on the app store!

Hopefully, this app will be so good, that you find it featured by Apple!

For reference, today, I needed a screen shot from Scrabble on my iPhone where the game board is “zoomed in.” So I…

Read more

iOs game app – Dev Log Entry # 1

Share this:  

Today I am wanting to get iOS app for friend that I am working on (see previous post), displaying sprites for game board properly (with the right widths and heights, and at the right positions).

If I can get just THAT done today, that will make me feel like I am getting somewhere.

If I can get gradients too that would be nice. But Orville… dude… the other stuff is more important!!

#journal #ios #app #objc Read more

Back to Work on an iOS Game!

Share this:  

I promised a friend quite some time ago that I would work on converting his physical board game into an iOS game.

I’ve worked on it in fits and starts. I even has somewhat of a UI set up that I’d shown him (like maybe 2 years ago)… I know… not so good.

But now I can work on it full time!  I am bound and determined to finish this sucker and get it into the app store!

Although I’ve played around with Swift somewhat, the original code was done in Objective C and I’m going to stick with that. The original code was using SpriteKit… and will continue to do so.

I’ve been spending the past few days studying the existing code, adding comments to it, and jotting down notes on how I want to handle coding the game.

I realize now that for the kind of game it is, that needs just basic geometric shapes, that I really have no need for bitmapped images (at least for the most part), and, by using some simple math, I can have my game’s graphics scale nicely without needed all sorts of images with different resolutions included in my project.

SO, onward I go! My goal is to have it out in the Apple App store for sale for my friend by the end of this July.

Experiments with Getting Web Content Using ColdFusion and PHP

Share this:  

So you want to get content from another web site out there to use on your site. You may be doing screen scraping of a page out there… But a better use is to get info from some sort of a web API.

Case in point: Calling a URI from the U.S. Weather Service to get current weather information.

http://w1.weather.gov/xml/current_obs/KMDW.xml

… This URI will return weather data from Chicago’s Midway Airport

Using ColdFusion

Here is a ColdFusion file for getting info on the current weather in Chicago:

It works fine. I do any Ajax call to “weather.cfm” from my home page, parse of the current temperature, and weather description and display it on my home page.  Nice!

 

If I call “weather.cfm” directly, I get weather data back for Chicago’s weather:

Below you can roughly see how it displays this page in Safari:

If you were to view the source, this is approximately what you would see, XML output:

Again, I have a JavaScript routine that calls weather.cfm via AJAX and pulls data from the <weather></weather> and the <temp_f></temp_f> tags.

This was running in ColdFusion Developer on my iMac and I can access on my personal wifi network.

 


Using PHP

I also wanted to do the same sort of thing using PHP. I decided I would use cUrl. Here is the code I used in a file called “weather.php”:

Notice that the URL is the same one as I’m using in the ColdFusion example.

 

So what happens if I directly call this “weather.php” page I created in my Safari web browser?

Well, we get a page like the one displayed above. Bummer! This is running on a PHP MAMP server on the same iMac as the ColdFusion server is. And trust me, the ColdFusion server is not calling this URL with any special permissions!

This led me to suspect that there was something different about the HTTP Header being sent by the ColdFusion server than was being sent by the PHP server using cURL.

But how to figure out what ColdFusion is doing differently than PHP?  Create a new PHP page to call instead of calling the xml file…

 


 

HTTP Header Test Page

I was going to create a PHP page that would look at it’s HTTP Header values and output them to the page for me to be able to see!

Here it is:

 

Now, if we changed weather.php to point to this URL, what do we get?

Note that the ‘1’ at the bottom is an artifact of cUrl (unless you set the CURLOPT_RETURNTRANSFER option to true.

What about doing the same thing with weather.cfm ?

There is definitely a difference between the two. Both have the same value for “Host”. Not much else is the same! It could be that the PHP request has HTTP Headers that the server does not like… But I’m going with the assumption that the PHP request is MISSING one or more HTTP headers that the web server (w1.weather.gov) is expecting. So lets modify our weather.php file:

 

Notice above how I added a new block of code (lines 8 through 12). This is adding three headers to our HTTP Header: ‘User-Agent’, ‘Connection’, and ‘Accept-Encoding’. I saved my changes and refreshed this page.

BINGO! IT WORKED!

But is the server looking for all three of these headers?

I remove ‘Accept-Encoding’.  I refresh the browser.  It still works.

I remove ‘Connection’.  I refresh the browser.  It still works.

And (of course) I remove ‘User-Agent’.  I refresh the browser.  And of course it fails.

So, ‘User-Agent’ is the key. Currently, in our example, it is set to the value of ‘ColdFusion’. Because that is the value I got when running the ColdFusion page. But actually (of course) our page is a PHP page when is requesting the info.

I change the value of ‘User-Agent’ from ‘ColdFusion’ to ‘PHP’. I refresh the browser and it works.

I wonder, is:   w1.weather.gov   looking for specific values for this header, or just that the ‘User-Agent’ header is present in the HTTP header?

So, I change the value of ‘User-Agent’ to: ‘SugarBoogers’.  I refresh the page and it works! This means that the server (at least in this case) is just checking to make sure that the ‘User-Agent’ HTTP Header is present and has a value… but doesn’t care WHAT the value is (I’m sure that ‘SugarBoogers’ is not a common user agent to check for!

Wrapping It Up

You might be able to “screen scrape” a web page without custom setting any HTTP headers. But I suspect that if your calling some sort of XML feed, JSON resource, or web service URI, there’s a good chance that you will need to set the ‘User-Agent’ HTTP header in order to get it to work.

Any comments? Thoughts? Let me know.

Happy Coding!

 

Resources

Entity Render Experiment in CodePen

Share this:  

Here is a little something that I’ve been messing around with in @CodePen. It renders the block diagram of a “data model.”  If you’ve ever used a modeling tool like Erwin this will look familiar…

Screen Shot of Model Render Demo

This is an experiment in rendering a lot of UI elements (entities) without having poor performance. In that, it will only render to the DOM entities that can currently be seen in the view port.

Right now, by default, it generates 200 entities. Try 2000 or 20000, or any other positive integer value, and see how it performs!

There are still a few bugs in it (its rendering too many entities at a time for example), but I think it proves its certainly possible.

You can try it yourself on CodePen here:     https://codepen.io/orvilleChomer/pen/NyXppd

Let me know what you think.

1 2 3 12