Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Initial Support for a Stock Ticker #564

Closed

Conversation

mggates39
Copy link
Contributor

@mggates39 mggates39 commented Dec 10, 2023

Description

This begins to addresses Issue 341

  • Uses the FinHub API https://finnhub.io/docs/api/introduction.
  • Needs a free API Key stored in your secrets.h file. It can be an empty string.
  • Accepts a comma separated list of stock symbols, any exchange.
  • Shows the data for each stock one at a time for 30 seconds.
  • Shows Current Price color coded for direction of change Red, Green, White.
  • Alternates the daily high and low prices and the opening and closing prices.

Additional Work Pending

  • Scrolling of more than one symbol. Now it just switches between symbols every 30 seconds.
  • Add additional data: the amount and percentage of change, Market Cap, and number of outstanding shares.
  • Any other suggested features

Contributing requirements

  • I read the contribution guidelines in CONTRIBUTING.md.
  • I understand the BlinkenPerBit metric, and maximized it in this PR.
  • I selected main as the target branch.
  • All code herein is subjected to the license terms in COPYING.txt.

This uses the FinHub API https://finnhub.io/docs/api/introduction
 - Needs a free API Key
 - Accepts a comma separated list  of stock symbols, any exchange
 - Shows the data for each stock one at a time for 30 seconds
 - Shows Current Price color coded for direction of change Red, Green, White
 - Alternates the daily high and low prices and the opening and closing prices

Additional Work Pending
 - Scrolling of more than one symbol
 -  Add additional data: amount and percentage of change, Market Cap, and outstanding shares.
 - Any other suggested features
@rbergen
Copy link
Collaborator

rbergen commented Dec 12, 2023

@mggates39 Would you be ok with me taking a look at the code and the effect on my Mesmerizer, report my feedback, but hold on the addition of the effect to the main tree until the first two bullets under "Additional Work Pending" have been dealt with?

I know we recently concluded that some changes benefit from a "divide and conquer" approach, but in the case of adding a new effect I'd like the first version we have people flash on their devices to include the stuff we were kind-of planning to have in that first version anyway. In fact, we can discuss the "additional data" bullet, but I'd like it to show multiple symbols from the beginning. People who trade in stocks tend to have a portfolio containing more than one, and adding an effect instance per symbol is rather expensive from a memory perspective.

@mggates39
Copy link
Contributor Author

@rbergen I would love if you would do that. I would be interested in pictures too, if it is not too difficult. I do not mind holding off until we have addressed the additional points. The data mentioned is already being collected. As it is now, one instance of the effect will rotate through the comma separated list of stock symbols, one every 30 seconds. It just does not scroll sideways through them, and @davepl pointed me to the methods I should be able to use to implement the scrolling.

Copy link
Collaborator

@rbergen rbergen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mggates39 As promised a first review based on me just looking at the code. I'll do my best to get round to checking out your code and running it later this weekend.

include/effects.h Outdated Show resolved Hide resolved
include/effects/matrix/PatternStockTicker.h Outdated Show resolved Hide resolved
include/effects/matrix/PatternStockTicker.h Outdated Show resolved Hide resolved
include/effects/matrix/PatternStockTicker.h Outdated Show resolved Hide resolved
include/effects/matrix/PatternStockTicker.h Outdated Show resolved Hide resolved
include/effects/matrix/PatternStockTicker.h Outdated Show resolved Hide resolved
include/effects/matrix/PatternStockTicker.h Show resolved Hide resolved
include/effects/matrix/PatternStockTicker.h Outdated Show resolved Hide resolved
include/effects/matrix/PatternStockTicker.h Outdated Show resolved Hide resolved
@mggates39
Copy link
Contributor Author

Addressed all the issues and pulled the current main branch in as well.

@rbergen
Copy link
Collaborator

rbergen commented Jan 7, 2024

So, I've today finally found the time to start testing this. Long story short: I didn't get far because of a low-memory condition, which prevented the HTTP client from making the TLS connection to Finnhub (more about Finnhub later). It seems to effectively be the same situation as discussed in discussion #562, issue #565 and a number of related discussions/PRs.

I didn't expect this to happen on Mesmerizer due to our rather heavy use of PSRAM on that board, but here we are. If I recall correctly @robertlipe indicated he would look into this after the holidays, and I think we can safely conclude we're generally stuck until we figure this out.

To elaborate a little on the memory usage, looking at the debug logging on my board, we seem to lose a lot of regular RAM between the invocation of taskManager.StartRemoteThread() and taskManager.StartNetworkThread() in main.cpp's setup(); memory drops from 128700 to 88812 bytes between those calls. The key thing that happens between those two calls is the call to ConnectToWiFi(), which was already identified as a prime suspect.

When all the network dependent services (web server - also an expensive service, socket server, color data server) have started after the WiFi connection has been established, we're down to just below 40K free RAM, which is definitely too close to 0.

So again, I think we have another issue to address before we can move forward with this PR.

There is one thing I did notice while getting started. In secrets.example.h, the comment after the new stock ticker API key define mentions "Finhub" and "finhub.io". The correct names are "Finnhub" and "finnhub.io"; the domain with one "n" seems to be for sale if anybody's interested.

@rbergen
Copy link
Collaborator

rbergen commented Jan 9, 2024

After updating all dependencies to their now current versions - which have indeed seen updates between my previous message and this one -, we seem to once again have a sane overall free RAM situation. With which I mean that with everything started up and settled down, we start the effect cycle with approximately 75K regular RAM free.

Unfortunately, this does not address the problem with the fetching of the stock ticker information; the embedded SSL client still complains about failed memory allocations. The concrete logging I see after the board has started and WiFi has connected, is this:

[ 45128][E][ssl_client.cpp:37] _handle_error(): [start_ssl_client():273]: (-16) BIGNUM - Memory allocation failed
[ 45128][E][WiFiClientSecure.cpp:144] connect(): start_ssl_client: -16
(E) (getStockData)(C1) Error (-1) fetching Stock data for Ticker: 'AAPL'
[ 45493][E][ssl_client.cpp:37] _handle_error(): [start_ssl_client():273]: (-16) BIGNUM - Memory allocation failed
[ 45493][E][WiFiClientSecure.cpp:144] connect(): start_ssl_client: -16
(E) (getStockData)(C1) Error (-1) fetching Stock data for Ticker: 'IBM'
[ 45882][E][ssl_client.cpp:37] _handle_error(): [start_ssl_client():273]: (-16) BIGNUM - Memory allocation failed
[ 45883][E][WiFiClientSecure.cpp:144] connect(): start_ssl_client: -16
(E) (getStockData)(C1) Error (-1) fetching Stock data for Ticker: 'MSFT'

As I'm sure this is the first time we're trying to pull data in over HTTPS instead of HTTP, I can't fall back on previous experience for ideas on how to address this.

@mggates39 I'm assuming you tested this effect before opening this PR. Did you do anything specific to get the stock info fetches to work for you?

@mggates39
Copy link
Contributor Author

@rbergen I did test it on a 4MB PSRAM board with EVERY other effect turned off. I will load it up and see what the RAM numbers look like next time I am at the board, probably tonight. Then start adding things until it fails. My main issue with that board is the program memory runs out quickly.

Also, to the Finnhub typos. I will get those fixed too. The URLs are right, but the comments are not. Go figure.

@mggates39
Copy link
Contributor Author

mggates39 commented Jan 10, 2024

Here are the configuration changes I made to get the Stock Ticker running and pulling data.

Changes to include/global.h:

In the #elif MESMERIZER block disable these items to free up memory

#define INCOMING_WIFI_ENABLED       0   // Accepting incoming color data and commands
#define ENABLE_WEBSERVER            0  // Turn on the internal webserver
#define ENABLE_OTA                  0   // Accept over the air flash updates
#define ENABLE_REMOTE               0   // IR Remote Control

Changes to platformio.ini:

In the [dev_mesmerizer] block set these items to use the 4MB Flash partition This change is not required for the standard 8MB Mesmerizer board, just my little 4MB one.

board_build.partitions = config/partitions_custom.csv
board_upload.flash_size = 4MB

Changes to src/effects.cpp:

Comment out most of the include effects statements. Be sure to leave the following ones in place

#include "effects/strip/fireeffect.h"          // fire effects
#include "effects/strip/stareffect.h"          // star effects
...
#if ENABLE_AUDIO
    #include "effects/matrix/spectrumeffects.h"    // Musis spectrum effects
    #include "effects/strip/musiceffect.h"         // Music based effects
#endif

#if FAN_SIZE
    #include "effects/strip/faneffects.h" // Fan-based effects
#endif

#if USE_HUB75
    #include "ledmatrixgfx.h"
  #if ENABLE_WIFI
    // #include "effects/matrix/PatternSubscribers.h"
    #include "effects/matrix/PatternWeather.h"
    #include "effects/matrix/PatternStockTicker.h"
  #endif
#endif  // USE_HUB75

#ifdef USE_WS281X
    #include "ledstripgfx.h"
#endif

Comment out the static initialization for the subscriber effect since it is not included

#if USE_HUB75 && ENABLE_WIFI
    // std::vector<SettingSpec, psram_allocator<SettingSpec>> PatternSubscribers::mySettingSpecs = {};
    std::vector<SettingSpec, psram_allocator<SettingSpec>> PatternStockTicker::mySettingSpecs = {};
#endif

And in the #elif MESMERIZER Block ensure that only

         ADD_EFFECT(EFFECT_MATRIX_STOCK_TICKER,      PatternStockTicker);

is enabled and all the other ADD_EFFECT() calls are commented out.

From the build:

linking .pio/build/mesmerizer/firmware.elf
Retrieving maximum program size .pio/build/mesmerizer/firmware.elf
Checking size .pio/build/mesmerizer/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [==        ]  23.5% (used 76856 bytes from 327680 bytes)
Flash: [========= ]  93.0% (used 1522973 bytes from 1638400 bytes)
Building .pio/build/mesmerizer/firmware.bin

From the run:

(I) (PrintOutputHeader)(C1) NightDriverStrip
(I) 
(I) (PrintOutputHeader)(C1) ------------------------------------------------------------------------------------------------------------
(I) (PrintOutputHeader)(C1) M5STICKC: 0, USE_M5DISPLAY: 0, USE_OLED: 0, USE_TFTSPI: 0, USE_LCD: 0, USE_AUDIO: 1, ENABLE_REMOTE: 0
(I) (PrintOutputHeader)(C1) ESP32 PSRAM Init: OK
(I) (PrintOutputHeader)(C1) Version 40: Wifi SSID: "xxxxxxxxxxxx" - ESP32 Free Memory: 209924, PSRAM:4191707, PSRAM Free: 4185719
(I) (PrintOutputHeader)(C1) ESP32 Clock Freq : 240 MHz
(I) (setup)(C1) Startup!
(I) (setup)(C1) Starting DebugLoopTaskEntry
>> Launching Debug Thread.  Mem: 209924, LargestBlk: 110580, PSRAM Free: 4185719/4191707, (W) (ReadWiFiConfig)(C1) Retrieved SSID and Password from NVS: "xxxxxxxxxxxx", "********"
(W) (setup)(C1) Starting ImprovSerial for ESP32
[   874][E][vfs_api.cpp:182] remove(): /improv.log does not exists or is directory
(I) (setup)(C1) Sending Improv packet to declare we're up. Ignore any IMPROV lines that follow this one.
IMPROV�
>> Launching JSON Writer Thread.  Mem: 201356, LargestBlk: 110580, PSRAM Free: 4185683/4191691, (W) (DeviceConfig)(C1) DeviceConfig could not be loaded from JSON, using defaults
(W) (NotifyJSONWriterThread)(C1) >> Notifying JSON Writer Thread

Starting SmartMatrix Mallocs
Heap/32-bit Memory Available: 196364 bytes total, 110580 bytes largest free block
8-bit/DMA Memory Available  : 163076 bytes total, 110580 bytes largest free block
Total PSRAM used: 6228 bytes total, 4185415 PSRAM bytes free
SmartMatrix Layers Allocated from Heap:
Heap/32-bit Memory Available: 194888 bytes total, 110580 bytes largest free block
Starting SmartMatrix DMA Mallocs
sizeof framestruct: 00004000
DMA Memory Available before ptr1 alloc: 128800 bytes total, 110580 bytes largest free block
matrixUpdateFrames[0] pointer: 3FFD7B54
DMA Memory Available before ptr2 alloc: 128800 bytes total, 110580 bytes largest free block
matrixUpdateFrames[1] pointer: 3FFDBB64
Frame Structs Allocated from Heap:
Heap/32-bit Memory Available: 162088 bytes total, 110580 bytes largest free block
8-bit/DMA Memory Available  : 128800 bytes total, 110580 bytes largest free block
Total PSRAM used: 32212 bytes total, 4159303 PSRAM bytes free
Allocating refresh buffer:
lsbMsbTransitionBit of 0 requires 49152 RAM, 110580 available, leaving 61428 free: 
Raised lsbMsbTransitionBit to 0/7 to fit in RAM
lsbMsbTransitionBit of 0 gives 76 Hz refresh, 180 requested: 
lsbMsbTransitionBit of 1 gives 152 Hz refresh, 180 requested: 
lsbMsbTransitionBit of 2 gives 300 Hz refresh, 180 requested: 
Raised lsbMsbTransitionBit to 2/7 to meet minimum refresh rate
Descriptors for lsbMsbTransitionBit 2/7 with 16 rows require 12288 bytes of DMA RAM
SmartMatrix Mallocs Complete
Heap/32-bit Memory Available: 149768 bytes total, 110580 bytes largest free block
8-bit/DMA Memory Available  : 116480 bytes total, 110580 bytes largest free block
Total PSRAM used: 32212 bytes total, 4159303 PSRAM bytes free
Setting up parallel I2S bus at I2S1
Matrix Refresh Rate: 100
(I) (SetupBufferManagers)(C1) Could allocate 510 buffers but limiting it to 500
(I) 
(W) (SetupBufferManagers)(C1) Reserving 500 LED buffers for a total of 3088000 bytes...
(I) (setup)(C1) Initializing splash effect manager...
(W) (InitSplashEffectManager)(C1) InitSplashEffectManager
(W) (InitEffectsManager)(C1) InitEffectsManager...
(I) (LoadJSONFile)(C1) Attempting to read JSON file /effects.cfg
(I) (InitEffectsManager)(C1) Creating EffectManager using default effects
(I) (addStockSymbol)(C1) Creating ticker: AAPL
(I) (addStockSymbol)(C1) Creating ticker: IBM
(I) (addStockSymbol)(C1) Creating ticker: MSFT
>> Launching Drawing Thread.  Mem: 149188, LargestBlk: 110580, PSRAM Free: 1036143/4175323, (W) (DrawLoopTaskEntry)(C1) >> DrawLoopTaskEntry
(W) 
(W) (DrawLoopTaskEntry)(C1) Entering main draw loop!
>> Launching Audio Thread.  Mem: 144716, LargestBlk: 106484, PSRAM Free: 1036143/4175323, (I) (AudioSamplerTaskEntry)(C0) >>> Sampler Task Started

        ) (setup)(C1) Making initial attempt to connect to WiFi.
(I) (ConnectToWiFi)(C1) WiFi credentials passed for SSID "xxxxxxxxxxxx"
(I) (ConnectToWiFi)(C1) Setting host name to NightDriverStrip...
(W) (ConnectToWiFi)(C1) Connecting to Wifi SSID: "xxxxxxxxxxxx" - ESP32 Free Memory: 104932, PSRAM:4175067, PSRAM Free: 1023139
(W) 
(W) (ConnectToWiFi)(C1) Not yet connected to WiFi, waiting...
>> Launching Network Thread.  Mem: 104676, LargestBlk: 69620, PSRAM Free: 1023139/4175067, >> Launching ColorData Thread.  Mem: 91052, LargestBlk: 57332, PSRAM Free: 1020479/4175019, (W) (UpdateStock)(C1) Skipping Stock update, waiting for WiFi...
(W) (NotifyJSONWriterThread)(C1) >> Notifying JSON Writer Thread
(I) (loop)(C1) Sending Improv packets to indicate WiFi is connected. Ignore any IMPROV lines that follow this one.
IMPROV�
(W) (ColorDataTaskEntry)(C1) Started color data server!
(W) (ConnectToWiFi)(C1) Connected to AP with BSSID: "C4:12:F5:6F:93:D4", received IP: 192.168.2.18
(I) (ConnectToWiFi)(C1) Setting Clock...
[  4697][E][WiFiUdp.cpp:221] parsePacket(): could not receive data: 9
(W) (UpdateClockFromWeb)(C1) NTP clock: Raw values sec=2444451701, usec=569143
(I) (UpdateClockFromWeb)(C1) Old Time: 4.812089, New Time: 1704849882.569143, Delta: 1704849877.757054
(I) (UpdateClockFromWeb)(C1) Adjusting time by 1704849877.757054 to 1704849882.569143
(I) (UpdateClockFromWeb)(C1) NTP clock: response received, updated time to: 1704849882.569143, DELTA: 1704849877.757054
(I) 
(I) (SaveToJSONFile)(C0) Number of bytes written to JSON file /effects.cfg: 124
(W) (NotifyJSONWriterThread)(C1) >> Notifying JSON Writer Thread
(I) (loop)(C1) WiFi: WL_CONNECTED, IP: 192.168.2.18, Mem: 84504, LargestBlk: 49140, PSRAM Free: 1019371/4174971, LED FPS: 30 Refresh: 60 Hz, Power: 3075 mW, Brite: 100%, Audio FPS: 50, MinVU:    0.0, PeakVU:    4.7, VURatio: 0.0 CPU: 072%, 047%, FreeDraw: 0.022
(I) (WriteCurrentEffectIndexFile)(C0) Number of bytes written to file /current.cfg: 1
(I) (updateTickerCode)(C1) Stock Heder: {"country":"US","currency":"USD","estimateCurrency":"USD","exchange":"NASDAQ NMS - GLOBAL MARKET","finnhubIndustry":"Technology","ipo":"1980-12-12","logo":"https://static2.finnhub.io/file/publicdatany/finnhubimage/stock_logo/AAPL.svg","marketCapitalization":2879436.4587166314,"name":"Apple Inc","phone":"14089961010","shareOutstanding":15552.75,"ticker":"AAPL","weburl":"https://www.apple.com/"}
(I) (updateTickerCode)(C1) Got ticker header: Symbol AAPL Company Apple Inc, Exchange NASDAQ NMS - GLOBAL MARKET
(I) (getStockData)(C1) Stock Data: {"c":185.14,"d":-0.42,"dp":-0.2263,"h":185.15,"l":182.73,"o":183.92,"pc":185.56,"t":1704834001}
(I) (getStockData)(C1) Got ticker data: AAPL Now 185.139999 Lo 182.729996, Hi 185.149994, Change -0.420000
(I) (loop)(C1) WiFi: WL_CONNECTED, IP: 192.168.2.18, Mem: 47052, LargestBlk: 32756, PSRAM Free: 1014819/4174875, LED FPS: 30 Refresh: 60 Hz, Power: 3734 mW, Brite: 100%, Audio FPS: 45, MinVU:    0.1, PeakVU:    2.9, VURatio: 0.0 CPU: 056%, 089%, FreeDraw: 0.014
(I) (updateTickerCode)(C1) Stock Heder: {"country":"US","currency":"USD","estimateCurrency":"USD","exchange":"NEW YORK STOCK EXCHANGE, INC.","finnhubIndustry":"Technology","ipo":"1915-11-11","logo":"https://static2.finnhub.io/file/publicdatany/finnhubimage/stock_logo/IBM.svg","marketCapitalization":146172.02354288002,"name":"International Business Machines Corp","phone":"19144991900","shareOutstanding":913.12,"ticker":"IBM","weburl":"https://www.ibm.com/"}
(I) (updateTickerCode)(C1) Got ticker header: Symbol IBM Company International Business Machines Corp, Exchange NEW YORK STOCK EXCHANGE, INC.
(I) (getStockData)(C1) Stock Data: {"c":160.08,"d":-1.06,"dp":-0.6578,"h":160.4837,"l":159.51,"o":160,"pc":161.14,"t":1704834002}
(I) (getStockData)(C1) Got ticker data: IBM Now 160.080002 Lo 159.509995, Hi 160.483704, Change -1.060000
(I) (loop)(C1) WiFi: WL_CONNECTED, IP: 192.168.2.18, Mem: 41584, LargestBlk: 32756, PSRAM Free: 1012047/4174827, LED FPS: 30 Refresh: 60 Hz, Power: 3763 mW, Brite: 100%, Audio FPS: 45, MinVU:    1.0, PeakVU:    2.0, VURatio: 0.0 CPU: 052%, 093%, FreeDraw: 0.016
(I) (updateTickerCode)(C1) Stock Heder: {"country":"US","currency":"USD","estimateCurrency":"USD","exchange":"NASDAQ NMS - GLOBAL MARKET","finnhubIndustry":"Technology","ipo":"1986-03-13","logo":"https://static2.finnhub.io/file/publicdatany/finnhubimage/stock_logo/MSFT.svg","marketCapitalization":2792970.0164701147,"name":"Microsoft Corp","phone":"14258828080","shareOutstanding":7432.26,"ticker":"MSFT","weburl":"https://www.microsoft.com/en-us"}
(I) (updateTickerCode)(C1) Got ticker header: Symbol MSFT Company Microsoft Corp, Exchange NASDAQ NMS - GLOBAL MARKET
(I) (loop)(C1) WiFi: WL_CONNECTED, IP: 192.168.2.18, Mem: 40936, LargestBlk: 32756, PSRAM Free: 1012631/4174811, LED FPS: 30 Refresh: 60 Hz, Power: 3734 mW, Brite: 100%, Audio FPS: 43, MinVU:    2.8, PeakVU:    4.9, VURatio: 0.

@rbergen
Copy link
Collaborator

rbergen commented Jan 10, 2024

Thanks! I will actually keep this at the ready if the memory improvements @davepl's been working on - which he will open a PR to merge into main soon - don't turn out to be enough. That said, if we need to switch off key features to get the effect running then we will have a problem further down the line. It'd be okay to do so while developing the effect, but in the end it would have to work in unison with the rest of the project.

Anyway, I'll revisit this when I can retest with Dave's upcoming changes in.

@mggates39
Copy link
Contributor Author

You are welcome. Again, I had to cut things down because the board was a small one.

I wonder if the String's data is in base RAM or PSRAM when the String itself is defined in an object that is allocated out of PSRAM.

I look forward to digging into this further.

@rbergen
Copy link
Collaborator

rbergen commented Jan 10, 2024

I'd expect String to use the default allocator, which on Mesmerizer should allocate any block larger than (currently) 128 bytes in PSRAM. Which kind of translates to "it depends on the size/composition of the String". But this is only based on my common sense reasoning, not a deep dive into the actual implementation of String.

@mggates39
Copy link
Contributor Author

Remember, bulk of the changes are just so it 'fits' on my 4MB board.

I wonder if the data behind the Strings defined in the Stock Ticker objects are in base RAM or PSRAM? Do you know?

I look forward to digging into this further.

@rbergen
Copy link
Collaborator

rbergen commented Jan 10, 2024

I wonder if the data behind the Strings defined in the Stock Ticker objects are in base RAM or PSRAM? Do you know?

I think I shared my perspective on this question in my previous comment?

@mggates39
Copy link
Contributor Author

@rbergen Yes you did. I accidentally posted my comment twice. My box restarted and I did not see the first comment when I came back to the conversation.

@mggates39
Copy link
Contributor Author

mggates39 commented Jan 19, 2024

I have a new development board from AliExpress on the way. My choice was based on the discussion here. The new board has enough memory to allow me to run the full stack with the latest memory fixes. This will allow me to better debug my memory usage on HTTPS connections and get this working on a normal configuration.

Also, I have some ideas about scrolling that I will start testing once I have my matrix wired to the new board.

@rbergen
Copy link
Collaborator

rbergen commented Jan 21, 2024

@mggates39 Thanks for that update. I hope to find the time to start testing your effect with the current state of main, soon. When I do, I'll obviously let you know how I fare.

@mggates39
Copy link
Contributor Author

mggates39 commented Jan 22, 2024

I have started the scrolling changes on a new development thread. If I like how it looks, I will merge it back into this one. Wish me luck. I will continue to keep this branch up to date as master evolves.

@rbergen
Copy link
Collaborator

rbergen commented Jan 22, 2024

Good luck! :)

@mggates39
Copy link
Contributor Author

I am back on this project. Had work issues come up, and then Google threatened to terminate my developer account if I did not get my applications up to one of the latest SDK versions. That took forever, but I beat the deadline and can now get back to this. Updates to the Pull Request to follow.

@rbergen
Copy link
Collaborator

rbergen commented Mar 10, 2024

@mggates39 Good to have you back! As I think most people are, I'm quite familiar with work getting in the way of free time. :)

I look forward to future updates to this PR. As it stands, for me the memory usage related to the use of HTTPS is still an unresolved issue.

@rbergen
Copy link
Collaborator

rbergen commented May 21, 2024

@mggates39 I merged #626 yesterday, which includes a finished stock ticker effect. It supports multiple ticker symbols being configured and it circumvents the HTTPS issue by not using HTTPS - instead it pulls its data from a proxy service hosted by Dave.

With this effect now in, I think the right thing to do from a project perspective is to close this PR.

I know you've spent your time and energy on this, and I really appreciate the investment you did in this. For one, it brought one issue to the surface that had to be addressed in the other stock ticker effect, and that we'll have to consider when developing other effects and capabilities in the future.

@rbergen rbergen closed this May 21, 2024
@mggates39
Copy link
Contributor Author

I agree. As I ease back into this project, pulled away by health issues, I will look at the new implementation. I am glad that the effort was not wasted and the issues uncovered were addressed. I look forward to making additional contributions to this project.

@rbergen
Copy link
Collaborator

rbergen commented May 21, 2024

Thank you for responding. I'm sorry to hear about the reason for your absence, and look forward to any future contributions you can make.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants