Last week, I shared a few revealing questions that I think showed the true flexibility of the latest ChatGPT model. ChatGPT’s creators at OpenAI admit the model can return biased or outright incorrect information, so it’s best to not depend on it for any planning or final decision-making. And of course, I independently warned this is not the best tool for highly suggestible people.
Still, it is difficult to downplay the impact the model has had just over the past month alone.
And yet, after using the model for several weeks, I noticed the model never does one thing that people ordinarily do…ask follow-up questions.
Notice of Non-Affiliation and Disclaimer: As of the publication date, we are not affiliated with, associated with, authorized with, endorsed by, compensated by, or in any way officially connected OpenAI, or their owners, subsidiaries or affiliates. The names OpenAI and ChatGPT, as well as related names, marks, emblems, and images are trademarks of their respective owners.
External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
Restoring The Art of Inquiry
Obtaining information is nice, but retaining the most salient points was really the objective here. For example, in a recent conversation with the chatbot, I wanted to learn about the open-source Kubernetes project and how to get started using it.
I started by asking how Kubernetes might relate to leased cloud services. The response from ChatGPT included a few unfamiliar concepts like containerization. As a hardware-oriented person, this is outside my domain. But rather than set the stage for the typical encyclopedic reply from the chatbot, I requested a small addition to ChatGPT’s next response…
Figure 1: Challenging ChatGPT with a basic question with a request for a reading comprehension check
For a first attempt, this open-ended question from the model was an impressive response. And this one actually had me wondering what kind of answer it would identify as a correct one.
Figure 2: Continued dialog
Conclusions
I think this is the way I plan to interact with the model in the future, as this seems to better utilize its capabilities as a conversational chatbot. With a few other out-of-the-box ways to ask questions, you may get some very memorable responses.
References
[1]
B. R. Mayes, “Seven Revealing Replies from ChatGPT,” Voxidyne Media, 26 Dec. 2022. [Online]. Available: https://unboxing-tomorrow.com/seven-revealing-replies-from-chatgpt/. [Accessed 12 Jan 2023].
[2]
OpenAI, “chat.openai.com,” OpenAI, 12 Jan 2023. [Online]. Available: https://chat.openai.com/chat. [Accessed 12 Jan 2023].
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
I’m pleased to announce I have launched the Unboxing newsletter for electronics and robotics enthusiasts! As this blog approaches its four-year anniversary, I hope this will provide a new way to connect with people and keep pace in these rapidly-developing fields.
This quarter’s newsletter is effectively a trial run, so if you have constructive feedback or criticism; feel free to comment or inquire via the “contact” form.
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
Manjaro Arm and KDE Plasma Mobile are Linux projects aimed at bringing security, configurability, and open-source software to mobile platforms. The notion of configurable, user-focused mobile devices appeals to users who are eager for an alternative to iOS and Android devices.
Both Manjaro and Plasma Mobile are works in progress. By far, the most impactful bug I encountered using Manjaro Arm related to the lock screen on the PinePhone Beta Edition. Fortunately, the problem was solved by issuing a single command to the phone’s terminal app. I’ve documented the procedure here to give readers a realistic idea of what it’s like to use these software tools and occasionally fix unexpected behaviors.
Notice of Non-Affiliation and Disclaimer: As of the publication date, we are not affiliated with, associated with, authorized by, endorsed by, compensated by, or in any way officially connected with Pine64, Manjaro GmbH & Co KG, Arm Limited, or their owners, subsidiaries or affiliates. The names Pine64, Pine Phone, Arm, as well as related names, marks, emblems, and images are trademarks of their respective owners.External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
The Lock Screen Bug Summarized
Normally, if a phone sits idle for too long, it should shut off the display, and optionally not resume until the user authenticates themselves. In Manjaro with KDE Plasma Mobile version 5.21.2, this behavior is adjustable under the Settings > Screen > Lock Screenand Sleep dialog.
And the configuration itself is stored in the phone’s filesystem as the file: ~/.config/powermanagementprofilesrc
But for this particular phone, it began to lock not after the specified time delay, but instantly any time the screen was tapped or after a button was pressed. Unlocking the phone worked only until the next touch or button press, which locked all over again. This happened in an endless loop.
Steps to Reproduce the Bug
The trouble started sometime after following these steps…
Went to Settings > Screen
Set Lock Screen Sleep = Never
Removed the phone from the charger
Connected to a Wi-Fi network
Shortly thereafter, the problem would happen any time the phone was not plugged into a USB charger. Restoring the default setting did not fix the problem.
Fixing the Problem
After searching the Manjaro Arm forum for a solution, it was clear the file: ~/.config/powermanagementprofilesrc needed to be deleted or at least renamed to restore the default setting.
Fortunately, I had already connected the phone to a local Wi-Fi network. This meant that even in its locked state, the phone was still remotely accessible via secure shell (SSH).
Command Line Basics
For anyone new to the command line interface and the bash shell: there are a few things to know:
The command line is case-sensitive
File paths use the forward slash /
File extensions are optional. The “powermanagementprofilesrc” file has none at all.
If a command returns absolutely no output, that usually means it was successful
To exit the terminal, type “exit”
Accessing the Phone Via SSH
With the phone connected to my local Wi-Fi network (or hotspot), I opened the Windows application: PuTTY.
Figure 1: Screenshot of PuTTY’s Configuration Window
In PuTTY’s opening dialog:
Enter the IP address assigned to the phone
Set Port = 22
Click “open”
When the black and white terminal emulator appears, log into the phone using the username and password you configured into the phone. After a short delay, the welcome message and a command prompt should appear…
Figure 2: A Snippet from powermanagementprofilesrc (viewed in VIM version 9.0.910)
Now it’s time to rename the offending file. In the shell, use the move (mv) command to move the file from one name to another.
~/.config/powermanagementprofilesrc is the path to the original file, where ~ is the equivalent of typing the home directory (which is usually in the form: /home/your-user-name-here)
~/.config/powermanagementprofilesrc.old is the new name I have assigned to the file. Adding .old to the end is a reminder that this is a renamed version of an older file.
This change fixed the problem immediately.
Inspecting powermanagementprofilesrc
The powermanagementprofilesrc file is rather short and human-readable. Open the original by typing…
nano ~/.config/powermanagementprofilesrc.old
Or view the new version by typing…
nano ~/.config/powermanagementprofilesrc
Here is now the bugged version and the restored version compared…
As the comparison shows, the bugged version has a [Battery][BrightnessControl] property that the working version doesn’t.
What’s more revealing is the [Battery][SuspendSession] property has idleTime set to “120” in the bugged version, but “300000” in the non-bugged version. There are no units of measure to contextualize what “120” and “300000” mean. But if the assumed units are milliseconds: the non-bugged version would correspond to 5 minutes, and the bugged version would be 0.12 seconds. This doesn’t quite explain everything, but it’s a start.
This ambiguity in units is always why I often append a unit of measure to the end of variables that store measurements (ex: setupTime_ms, holdTime_us).
Closing Remarks
Generally, the best way to avoid technical glitches is to frequently check for an install official updates through the Discovery app. Alternatively, the Pine Phone can boot other operating systems if the microSD card slot contains a bootable Linux image.
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
The Linux-powered PinePhone is an alternative to other smartphone brands that have cornered the market. The project, led by PINE64 focuses on configurability and open documentation. While the phone arrived from Hong Kong fully assembled, the phone itself is engineered for user serviceability. That’s to say, repairs and modifications are encouraged by PINE64 itself. Even the mainboard can be easily replaced provided users follow the instructions. And even the schematic is readily available on the official site.
For the past few months, I’ve used the PinePhone beta edition as a secondary mobile device. This follow-up will summarize the experience and hopefully give a realistic idea of what it’s like to own and operate the phone in its current iteration.
Notice of Non-Affiliation and Disclaimer: As of the publication date, we are not affiliated with, associated with, authorized by, endorsed by, compensated by, or in any way officially connected with Pine64, Manjaro GmbH & Co KG, Arm Limited, AT&T or their owners, subsidiaries or affiliates. The names Pine64, Pine Phone, Arm, as well as related names, marks, emblems, and images are trademarks of their respective owners.External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
Recap
The PINE64 company owns and moderates the PINE64 wiki page, which is effectively the owner’s manual for every Pine64 device. On the other hand, theoperating systems (OS) come directly from the Linux community. Therefore: any OS and application-level questions might be best directed to their respective Linux projects than PINE64 itself.
Figure 1: Screenshot of the Default Plasma Mobile Desktop
These OSs come as Linux distributions (or “software releases”) and they are engineered to meet a specific set of user needs. The software release demonstrated here in August was Manjaro Arm. In turn: Manjaro Arm’s graphical environment uses Plasma Mobile–a mobile variant of the popular KDE desktop.
The PinePhone hardware has been revised over the years: beginning with projects “Anakin” and “Don’t be Evil.” The exact model I received appears to be PinePhone version 1.2b.
Performance
The processor for this Pine Phone revision is an Allwinner A64 Quad Core System on Chip (SoC) with an integrated Mali 400 MP2 graphical processing unit (GPU). The A64 is based on an Arm Cortex-A53 and Arm’s aarch64 instruction set. Therefore, a software release must have Arm compatibility in order to function.
Like many phones from the decade, the universal serial bus (USB) serves as the charging port, a digital video port, and the USB port for a keyboard and mouse. These interfaces are bundled together with the optional convergence package.
Wireless is provided by a Realtek Wi-Fi and Bluetooth module, plus a Quectel Long Term Evolution (LTE) category 4 cellular modem. The phone featured in this article used the AT&T cellular network in North America.
Regarding computing power: the Pine 64 wiki suggests it is comparable to a Raspberry Pi 3 but notes the GPU is much weaker. This is a fair assessment based on my time with both platforms.
Thoughts for Windows Users
The learning curve is less impactful than you might guess. Just like any Android or iOS smartphone, icons and other graphical tools are primarily how you operate the phone. Linux knowledge is not required.
Pros
Above all, the greatest advantage this phone has over entry-level smartphones is its configurability and repairability. Even in its default state, the Plasma Mobile desktop grants easy access to the terminal emulator. Users can easily make changes that would normally require rooting the phone.
It is also trivial to manage the phone’s software and add/remove packages using the Discover app. Pre-packaged software is kept to a minimum, avoiding bloatware that comes bundled with competing smartphones.
Embedded developers will be happy to know the phone’s stereo port also functions as a serial interface, and this feature can be turned on and off. There are also 6 pogo pins inside the device that carry an inter-integrated circuit (I2C) serial interface. This allows unique, low-bandwidth peripherals such as the official LoRa add-on case.
Cons
As a beta release, the phone does have a few drawbacks.
The most impactful was the limited responsiveness of the Plasma Mobile desktop environment. Generally, a user interface should take less than 100 ms to respond to user input. Otherwise, it becomes awkward to use. For Plasma Mobile, delays of this magnitude are quite common, even when the phone is fresh from the box. There doesn’t appear to be an easy fix except to install a different software release.
The image quality of the front and rear cameras under the “Megapixels” app has limited color fidelity. The app’s settings are not quite configurable as of the version I have installed. This lead to low color saturation in images (especially greens and blues) and a cyan tint on white or grey objects. It’s unclear whether this is due to limitations in the Megapixels app or trouble with the front and rear imagers themselves. But I wager this will be addressed in future releases.
Finally, compared to my other entry-level smartphones, the PinePhone’s screen seemed more susceptible to cuts and abrasion. This is probably addressed by the optional tempered glass screen projector, which I did not use.
Useful Terminal Commands
Using the text-based command line is completely optional, so long as things are working smoothly. I did need to access the command line on one occasion to fix a lock screen bug that shipped with the phone. Every other time I used the command line, it was a purely exploratory process, such as issuing commands to see the phone’s specifications:
ip a
…Returns the inet address of the phone, if it is on a network. An inet address is also called an internet protocol (IP) address in technical literature.
python --version
…Returns which version of Python is installed on the PinePhone.
lscpu
…Returns some specifications about the central processing unit (CPU).
uname -a
…Returns information about the system, including the version of Manjaro Arm installed. The optional -a parameter means print “all” the information.
cat /proc/version
…Is similar to uname -a, but returns the GNU Compiler Collection (GCC) version number as well.
journalctl -f
…Returns real-time notifications about the system’s state. This includes charging status, applications, their dependencies, and other information tracked by the systemd utility. The optional -f parameter means to “follow” the journal as it prints in real time.
Closing Remarks
Just as before, the PinePhone beta edition does what it was intended to do: be a basic, configurable smartphone with excellent repairability.
Still, there are a few unresolved problems such as the input lag and the reliability of certain software dependencies that make it risky to use as a solo “daily driver” phone.
But overall, my experience using the phone this season has been mostly positive, and expect to purchase a second unit some time in the future for development purposes.
References
[1]
KDE e.V., “Introducing the PinePhone – KDE Community edition,” KDE e.V. , [Online]. Available: https://kde.org/announcements/plasma-mobile/pinephone-plasma-mobile-edition/. [Accessed 23 Dec 2022].
Arm Limited, “Learn the architecture – A64 Instruction Set Architecture,” Arm Limited, [Online]. Available: https://developer.arm.com/documentation/102374/0101/Overview?lang=en. [Accessed 15 Dec 2022].
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
A new chatbot named ChatGPT has caught the engineering community including myself off-guard. While artificial intelligence is a bit outside my specialization (excluding a few projects in object detection), the first night I tried experimenting with this new tool was uncomfortable but time well spent.
For context: ChatGPT is a project created by United States-based OpenAI Inc. According to the company’s official blog, it is a finely-tuned byproduct of project GPT-3.5, a natural language model trained to read and return natural text. The model was optimized using human demonstrations that guide the model toward its objective of conversing in a high-quality and natural-sounding manner…
Figure 1: A snippet of my dialog with ChatGPT
Naturally, I had to try this out for myself by asking a few open-ended questions of my own. For clarity, all text generated by ChatGPT below is enclosed within large block quotes.
Notice of Non-Affiliation and Disclaimer: As of the publication date, we are not affiliated with, associated with, authorized by, endorsed by, compensated by, or in any way officially connected with OpenAI LP, OpenAI Inc., or their owners, subsidiaries or affiliates. The names OpenAI, ChatGPT, as well as related names, marks, emblems, and images are trademarks of their respective owners. External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
To get started, I used a search engine to search for “ChatGPT.” This returned OpenAI’s landing page, plus their affiliated blog: https://openai.com/blog/chatgpt/ .
To use the chatbot, visitors must create an OpenAI account using a valid email address and a telephone number that can receive text messages. As always, carefully read and understand the terms of service before deciding for yourself whether to proceed.
Figure 2: Access to the ChatGPT chatbot and the application programming interface was account-based
Verify your email by checking your inbox, and of course…check the junk folder if it doesn’t appear within a few minutes.
ChatGPT’s Limitations as of December 2022
As of this writing, OpenAI maintains a frequently asked questions (FAQ) page. This is worth a read since it describes some of the models’ practical limitations.
Above all, December’s ChatGPT can generate inaccurate, incomplete, or biased responses. Therefore, never rely on it for planning or final decision-making.
The model can only leverage the specific data on which it was trained.
The model does not leverage any real-time information. For example, it can describe a route that connects 2 cities, but not the latest travel conditions.
Open-Ended Questions
Naturally, I wanted to start off by posing some single-ended questions. That is: inquiring about one topic at a time. In no particular order, my questions were…
QUESTION: What is my email address?
“I’m sorry, but I don’t have access to any personal information about you, including your email address. It’s important to keep your personal information private and secure, and it’s not appropriate to disclose it to others, including online entities like me. If you need help accessing or managing your email account, I recommend contacting your email service provider or consulting their documentation and support resources.” — ChatGPT
It was worth a try.
QUESTION: How many states bordered North Dakota in 2010?
Here, I was curious to know how liberally the model would interpret the word “state.” The 3 U.S. states bordering North Dakota were acceptable, but would ChatGPT consider its neighboring Canadian provinces as well? Would the entire nation of Canada be considered a single state?
“North Dakota is a state located in the northern Great Plains region of the United States. In 2010, it was bordered by four states: Montana to the west, Minnesota to the east, South Dakota to the south, and Manitoba, Canada to the north. It is also bordered by the Canadian provinces of Saskatchewan to the northwest and Saskatchewan to the north.” — ChatGPT
This seems typical of how ChatGPT handles ambiguous questions: offering multiple interpretations…but doing so succinctly and explaining itself along the way. The apparent double-counting of Saskatchewan (but not Manitoba) in the closing sentence was a bit of an oddity that had me searching a couple of encyclopedias for possible explanations.
Comparative Questions
Next, I was eager to know if the model could “connect the dots” between multiple objects or ideas.
QUESTION: What does the “GPT” stand for in “ChatGPT?”
“GPT stands for “Generative Pre-training Transformer.” It is a type of artificial intelligence model developed by OpenAI that is designed to generate human-like text. It uses a transformer architecture, which is a type of neural network that is particularly effective at processing sequential data such as natural language text. The GPT model is trained on a large dataset of text and learns to predict the next word in a sequence given the context of the previous words. It can then generate coherent and coherently formatted text by sampling from the distribution of predictions it has learned. “ChatGPT” is a variant of the GPT model that is specifically designed to be used in chatbot applications.” — ChatGPT
This response squares with other OpenAI literature such as the open-access paper “Can Machines Tell Stories? A Comparative Study of Deep Neural Language Models and Metrics.” The paper mentions OpenAI’s GPT projects explicitly, and is probably a good starting point for off-site technical details about the project prior to 2020.
QUESTION: What has a gate, a source, and a drain?
“A field-effect transistor (FET) has a gate, a source, and a drain. A field-effect transistor is a type of electronic device that is used to control the flow of electrical current in a circuit. It consists of a channel of semiconductor material, such as silicon or germanium, that is sandwiched between two layers of a conductor, such as metal. The gate is the control electrode that is used to regulate the flow of current through the channel. The source is one of the electrodes that is used to supply the current to the channel, and the drain is the other electrode that is used to drain the current away from the channel. Field-effect transistors are commonly used in a variety of electronic devices, such as computers, smartphones, and other electronic devices.” — ChatGPT
QUESTION: What do the years 2000, 2004, 2008, and 2012 have in common?
“The years 2000, 2004, 2008, and 2012 have a few things in common: “They are all leap years: A leap year is a year that has an extra day (February 29) added to it to account for the fact that the Earth’s orbit around the Sun is slightly longer than 365 days. Leap years occur every four years, so 2000, 2004, 2008, and 2012 are all leap years. They are all presidential election years in the United States: In the United States, presidential elections are held every four years, and the years 2000, 2004, 2008, and 2012 all correspond to presidential election years. They are all multiples of four: 2000, 2004, 2008, and 2012 are all multiples of four, which means that they are divisible by four with no remainder. They are all even numbers: 2000, 2004, 2008, and 2012 are all even numbers, which means that they are divisible by two with no remainder.”— ChatGPT
This is correct, yet there will clearly be upperlimits to the completeness of any given response. Example: these are also Olympiad years in which the Summer Games were held worldwide.
QUESTION: In terms of the U.S. stock market: what did the years 1987, 2000, and 2008 have in common?
Initially, my question was “What do the years 1929, 1974, 1987, 2000, and 2008 have in common?” The model was not able to respond, but hypothesized that the years might have historical significance to some particular field. After rephrasing myself, ChatGPT replied…
“The years 1987, 2000, and 2008 were all marked by significant market events or crises in the U.S. stock market. Specifically:
1987: The stock market crash of 1987, also known as “Black Monday,” occurred on October 19, 1987, when the Dow Jones Industrial Average (DJIA) fell by 22.6% in a single day. This was the largest one-day percentage drop in the DJIA’s history at the time, and it was triggered by a combination of market speculation, high valuation, and concerns about rising interest rates.
2000: The dot-com bubble, which had been building throughout the late 1990s, burst in 2000, leading to a significant decline in the stock market. The NASDAQ, which had reached an all-time high in March 2000, fell by 78% from its peak to its trough in 2002.
2008: The global financial crisis, which began in 2007, had a significant impact on the U.S. stock market in 2008. The DJIA fell by more than 50% from its peak in 2007 to its trough in 2009, and many major financial institutions and companies were forced to declare bankruptcy or seek government bailouts.
Overall, these three years were marked by significant market events or crises that had a significant impact on the U.S. stock market and the broader economy.” –ChatGPT
ChatGPT’s Most Impressive Feat
ChatGPT’s most shocking answer of the night came as I tried to trip it up with an abstract riddle. This one has no literal interpretation that I’m aware of, offers little context, and no hints…
QUESTION: What has two sides and a thousand ribs?
“A deck of cards has two sides (the front and the back) and a thousand ribs (the individual card). Each card in a deck of cards has two sides: the front, which features the suit and rank of the card, and the back, which is typically a uniform color or design. A standard deck of cards has 52 cards in total, divided into four suits (spades, hearts, diamonds, and clubs) with 13 cards in each suit. The cards are made of paper or thin cardboard and are typically about 2.5 inches wide and 3.5 inches tall. The edges of the cards are often ribbed or serrated to make them easier to shuffle and handle.” –ChatGPT
This was easily the most shocking response of the entire night. Not only did the model handily find a plausible answer, but this was actually not the solution I expected. I expected the response of “a railroad” (which has 2 rails, and an auspiciously large number of ties). Yet, the “deck of cards” interpretation was remarkably appropriate.
There is no clear indication whether metaphors or double-entendre are within the model’s capabilities, so there’s a fair chance ChatGPT’s training data simply contained a spoiler. I did try a couple harder riddles that I paraphrased to make any online spoilers less discoverable. The model was not able to answer these, but instead took the more literal route of defining objects the riddles contained. But I’m curious to know how it might respond to more rephrasing.
Closing Remarks
In summary, ChatGPT demonstrated great effectiveness at extracting salient points from its training data. When I asked for the connection between “gate,” “source,” and “drain;” the model responded correctly. But it also supplied themost relevant notions they had in common: namely their connections to semiconductor theory. Even without any further improvement, I can envision this being a sort of search engine for when you don’t know what you are searching for.
Still, it’s easy to also envision the technology being misused.
On the user-facing side: visitors may use their search queries for criminal enterprise, or to deliberately disgrace the project in order to control it.
On the training side: public or private entities could deliberately skew ChatGPT toward self-serving behaviors–such as endorsing certain ideologies, or training uncritical thinkers to act against their own interests. A sort of program that programs people.
These are fair reasons to question centrally controlled or opaque artificial intelligence projects. Regardless, we’ve clearly crossed the Rubicon in terms of machine learning. And this field deserves everyone’s attention, open dialog, and scrutiny in 2023.
A. Das and R. M. Verma, “Can Machines Tell Stories? A Comparative Study of Deep Neural Language Models and Metrics,” IEEE Access, vol. 8, pp. 181258-181292, 2020.
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
The International System of units (SI) defined many ways to express measurements in print. Yet, hardware developers should be ready to encounter some variations on the SI system from time to time. Below are 3 common examples that electronics developers and programmers should be aware of.
External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality, or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
RKM Code
RKM code notation replaces decimal points with a unit of measure. That’s to say: everything normally located left of the decimal place is printed left of the unit, and the rest is placed on the right. The method is frequently associated with resistors and capacitors (per IEC 60062:2016 “Marking codes for resistors and capacitors”) . Yet, engineering documentation (especially schematics) may apply it to other measurable quantities such as voltage.
SI UNITS
RKM EQUIVALENT
0.1 Ω
0R1
100 Ω
100R
3.3 kΩ
3k3
33 kΩ
33k
33 MΩ
33M
3.3 V
+3V3
2.7 V
+2V7
1.8 V
+1V8
Table 1: RKM code examples
The notation was created to address at least two problems in schematic capture. The first deals with typography/fidelity problems caused by decimal point characters. A decimal point’s small size makes it prone to loss during photocopying, compression, and other lossy image-transfer processes. Secondly, not every text encoding standard has a code point for the omega symbol (Ω) of resistance; so RKM code represents electrical resistance an uppercase R. RKM code is not mandatory by any means.
Decimal Prefix vs. Binary Prefix
The metric prefix system is based on exponential increases in the number 1000…
ENGLISH
NOTATION
EXPONENT
MULTIPLICAND
kilo
1 k
10001
1 000
Mega
1 M
10002
1 000 000
Giga
1 G
10003
1 000 000 000
Tera
1 T
10004
1 000 000 000 000
Table 2: Decimal-based prefixes
Digital data storage is usually structured in exponents of two. The SI system’s letter prefixes were not made for this purpose, and can lead to confusion when applied to digital storage. For example: a sales brochure may inaccurately express the amount of storage as “64 kB” which would mean 64,000 bytes under the SI system. A trained student or professional may tacitly understand the storage will actually be 65,536 (which is 216). But ultimately, this is open to interpretation.
The binary prefix system was created to address this discrepancy.
ENGLISH
NOTATION
EXPONENT
MULTIPLICAND
kibi
1 ki
10241
1 024
Megi
1 Mi
10242
1 048 576
Gibi
1 Gi
10243
1 073 741 824
Tebi
1 Ti
10244
1 099 511 627 776
Table 3: Binary-based prefixes
The two systems are still applied somewhat inconsistently between industries. Even departments within the same organization may use different prefixes, so when in doubt: consider going straight to the source to ask for clarification.
Ad Hoc Prefixes in SPICE
SPICE (meaning: Simulation Program with Integrated Circuit Emphasis) was developed in the 20th century, and occasionally it diverges from the modern SI system. Consequentially, the SPICE engine accepts (and expects) a few non-standard prefixes.
PLAIN ENGLISH
QUANTITY
SI SYSTEM
SPICE System
Mega
106
M
MEG
milli
10-3
m
M
micro
10-6
µ
u
Table 4: Differences Between SI System and SPICE Metric Prefixes
Additionally, many modern SPICE simulators are case-insensitive. Not only are “m” and “M” considered the same prefix; but typing “F” for “farad” will be read as “femto” (meaning 10-15). So be mindful of SPICE prefixes when using the application.
Interestingly, LTspice XVII (version 17.0.35.0) appears to recognize RKM notation.
References
[1]
National Institute of Standards and Technology, “NIST Special Publication 330: The International System of Units (SI),” 2019. [Online]. Available: https://doi.org/10.6028/NIST.SP.330-2019. [Accessed 20 Nov. 2019].
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
It’s time to test out a modular text-to-speech board, and five Arduino models came to mind while looking for something to control it. Let me know which model you want to see connected first!
Notice of Non-Affiliation and Disclaimer: As of the publication date, we are not affiliated with, associated with, authorized by, endorsed by, compensated by, or in any way officially connected with Arduino, Arm Holdings, OSEPP, Parallax, Microchip Technology, or their owners, subsidiaries or affiliates. The names Arduino, Arduino Portenta, Arduino Uno, Arduino Leonardo, Arduino Due, Arduino Portenta, Arm Cortex, OSEPP, Parallax, Atmel, as well as related names, marks, emblems, and images are trademarks of their respective owners.
How to Participate
Through the month of October, the Bill of Materials poll will tally up which of the 4 Arduino models below viewer want to see used the most. The model to receive the most votes will be the one to be featured first with the text to speech module.
Arduino Uno
Arduino Due
Arduino Leonardo
Arduino Portenta H7
As a bonus, there is a 5th Arduino model that will be featured in this application as well. To learn what model it is early: you can support Unboxing Tomorrow on BuyMeACoffee.com or Patreon.com for early access!
Objectives
The objective in this project is to control a non-Arduino text-to-speech (TTS) module using one of the Arduino models readily available. Doing so will entail powering both the Arduino and the TTS system from a common power supply, but not necessarily a common voltage.
By design, the TTS system requires a universal asynchronous receiver-transmitter (UART) as its control channel. Although the TTS uses a fairly unique protocol in its UART communications, this protocol is also simple and intuitive enough to implement using any of the Arduino modules listed below.
The primary challenge with this particular TTS is its 5-volt core voltage. This is the voltage level that the UART requires, yet some Arduino modules are not 5-volt tolerant (although I did once feature an Arduino that can easily switch between 3.3-volt and 5-volt mode). With all these objectives in mind, here are the options…
Arduino Uno
The model Uno is likely where many Arduino users of the past 2 decades got their start. Arduino’s official Uno is based on the Atmel 8-bit AVR core, which is now owned by Microchip Technology, Inc. Generally, the target of an Arduino Uno application is an Atmel ATMEGA328P microcontroller.
The official Uno originally used the through-hole variant of the microcontroller. Unfortunately, this variation bore the brunt of the latest chip shortage. This and other factors made the thick quad flat package (TQFP) and quad flat non-leaded (QFN) version a bit more desirable to the point there is now an official surface-mounted device (SMD) version used on the Arduino Uno Revision 3 SMD.
Arduino Leonardo
At first glance, the Arduino Leonardo looks just like the Uno. This is due to many Arduinos reusing similar form-factors for compatibility.
The standout difference between the Uno and the Leonardo is how the universal serial bus (USB) is handled by the on-board hardware. The ATMEGA328P used on the original Uno does not contain a USB controller of its own, whereas the Leonardo’s ATMEGA32U4 contains a USB 2.0 controller in addition to most peripherals the Uno has.
There is a clear advantage here for applications needing to operate as a USB device (such as a keyboard or mouse emulator). The Leonardo’s USB also eliminates the need to have a separate chip act as a USB bridge to the Arduino. Possibly as a result of this: Leonardos generally cost less than Unos from the same vendor, despite both having AVR cores of roughly equal computing power.
Arduino Leonardo is one of the 3.3-volt Arduino models, meaning the TTS module will need a logic level conversion stage between itself and the Arduino Leonardo. Otherwise the TTS module’s UART transmitter will expose the Leonardo to a voltage it cannot tolerate.
Arduino Due
Arduino Due (due being Italian for “two”) is a major step up in performance from the previous two Arduino models, and even larger models like the Arduino Mega2560.
It’s most notable distinction from the other models featured today is the high input/output count and its larger footprint. But programmers will notice this system is based on Atmel’s Arm Cortex-M3 series. The 32-bit Cortex M3 series is a completely different instruction set architecture (ISA) from the 8-bit AVR core, and therefore Arduino sketches will come to depend on a different set of software libraries from the Uno, Leonardo, Portenta, or Mega2560.
The upside is the substantial increase in computing power the Due has over the Uno and the Leonardo. Arduino Due users have already ported real time operating systems (RTOS) such have FreeRTOS to the Arduino for more advanced projects that can benefit from FreeRTOS task scheduling.
Arduino Portenta H7
Out of all the models featured here so far, the Portenta H7 has the greatest computing power and the widest set of peripherals. This system contains a STM32H7 dual-core microcontroller with an Arm Cortex M7 running at 480 MHz and an Arm Cortex M4 running at 240 MHz. The user can push an Arduino sketch to either core as if they were two independent Arduino boards, however the M4 core is effectively the “optional” core.
The original Portena H7 also contains wireless peripherals for WiFi, Bluetooth and cryptographic authentication. This makes the platform effective as both a web server and a Wi-Fi access point without the need for any accessory boards or other modifications.
The pin count of the Portena H7 is quite high. Therefore, a user should plan to use the high-density connectors on the bottom of the board in order to access every feature the original Portenta H7 has to offer.
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
Manjaro-Arm Plasma home screen with Linux applications
Recently, we unboxed the Linux-based Pine Phone beta edition. By default, this Linux-based and customizable smartphone shipped with the Manjaro-Arm Linux distribution and the Plasma desktop environment.
Swiping up from the home screen will reveal several applications (apps) that may seem unfamiliar, but are worth exploring. Today’s project will explain what they do and how to acquire more apps.
Notice of Non-Affiliation and Disclaimer: As of the publication date, we are not affiliated with, associated with, authorized by, endorsed by, compensated by, or in any way officially connected with Arm, Arm Holdings, Allwinner, Pine, Pine64, the Manjaro project, the Plasma project, or their owners, subsidiaries or affiliates. The names Pine, Pine64, Pine Phone, Manjaro, Arm, Allwinner, A64, Cortex, as well as related names, marks, emblems, and images are trademarks of their respective owners. External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
Background
Figure 1: Partial list of Pine Phone beta edition default apps.
Manjaro is a free and open-source software distribution of Arch Linux with a focus on user simplicity. The Manjaro distribution that shipped with the Pine Phone is engineered for the phone’s Allwinner ARM Cortex A53 microprocessor.
Plasma is a derivative of the KDE project’s Plasma desktop environment. This is the component that lets various Linux desktop applications run on mobile hardware.
Pine is the company that designed and manufactured the Pine Phone. While Pine maintains its own forum and its own wiki for technical support, users should turn to Plasma Mobile (www.plasma-mobile.org) or Manjaro Linux (https://manjaro.org) for software support.
For information on installing other Linux distributions to the Pine Phone (i.e. “flashing” a microSD card or the internal memory), you should refer to the official instructions on the Pine website.
Default Apps
The Discovery application is responsible for managing software packages. It also periodically checks for online updates. The following applications were pre-installed. For details on about each project, try Manjaro’s package search engine.
APP NAME
DESCRIPTION
Angelfish
Web browser
Buho
Note-taking
Calculator
Easy to use calculator
Calindori
Calendar application for mobile devices
Clip
Video player
Clock
Clock, timer, stopwatch, and alarm clock
Discover
Package manager (similar to app store)
Index
Graphical file system view
KDE Connect
Wireless file transfer utility
KDE Connect SMS
Text (SMS) messaging
Keysmith
On-Time-Password (OTP) client
Kirigami Gallery
Gallery application
Koko
Image gallery application
Kongress
Companion application for conferences
KTrip
Public transport assistance for mobile
Megapixels
Camera
mpv Media Player
Cross-platform media player
Neochat
Decentralized text, video, and audio message client
KDE e.V., “Plasma Mobile,” KDE e.V., [Online]. Available: https://plasma-mobile.org/. [Accessed 10 Sept. 2022].
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
The job of expressing quantities between 0 and 1 usually falls to the percent (%) sign. And when it’s used in this context, the % sign takes on the same value as 0.01.
The parts per million (ppm) convention works similarly to express quantities far smaller than 1 %. In this context, 1 ppm equals 1 x 10-6 (i.e. one divided by 1 million). The notion extends to parts per billion (ppb) and parts per trillion (ppt) wherever even smaller quantities are necessary.
External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
The dimensionless parts-per-quantity approach can express extremely small numbers without resorting to awkwardly large numbers of zeros right of the decimal point (or exponents, for that matter).
Resistors for example have a resistance (R) that will vary with a change in temperature (T-Tref), but only slightly. Consequentially the temperature coefficient of a resistor (αppm) may be small enough to approximate using ppm/°C…
…where Rref is the resistance at a reference temperature Tref (such as 20 °C).
There are 2 reasons why this blog avoids the parts-per-quantity convention whenever possible.
Reason #1: For Clarity
From a technical writing standpoint, relatively little insight can be gained from the ppm notation compared to other expressions. An alternate way to specify the above resistor’s temperature coefficient or any other parts-per-quantity form would be to include the unit of measure as part of the statement.
For example, a resistor with a temperature coefficient of 1 ppm/°C could also be expressed as:
1 (Ω/106 Ω)/°C
Multiplying the inside of the parenthesis by 10-6/10-6 will get the exponential term out of the denominator…
10-6 (Ω/Ω)/°C
Finally, the micro (µ) metric prefix can replace the number 10-6…
1 (µΩ/Ω)/°C
The presence of µΩ/Ω immediately signals that the expression relates to electrical resistance rather than the many other units ppm could possibly refer to.
Likewise, the idea may be extended to ppb and ppt…
1 ppm –> 1 (µΩ/Ω)
1 ppb –> 1 (nΩ/Ω)
1 ppt –> 1 (pΩ/Ω)
Reason #2: Language Independence
There is also a language conflict between the words “billion,” “trillion” and the quantities they are meant to express. This is because “billion” can mean either 109 or 1012, depending on whether the publication uses the short scale decimal system or the long scale system.
Table 1: Short Decimal Scale Versus Long Decimal Scale
QUANTITY
SCI NOTATION
SHORT SCALE
LONG SCALE
1
100
one
one
1 000
103
thousand
thousand
1 000 000
106
million
million
1 000 000 000
109
billion
(milliard)
1 000 000 000 000
1012
trillion
billion
1 000 000 000 000 000
1015
quadrillion
(billiard)
1 000 000 000 000 000 000
1018
quintillion
trillion
In North America (where Unboxing Tomorrow is based), the short scale system is almost a given. Other countries, historic documents, or publications from the United Kingdom prior to the 1970’s are a different matter. This trouble is compounded by the naming conflict between parts-per-thousand (ppt) and parts-per-thousand (also ppt).
Unless the context is completely unambiguous, this blog will normally follow the National Institute for Standards and Technology (NIST) recommended unit/unit notation.
References
[1]
U.S. NIST, “Guide for the Use of the International System of Units (SI),” U.S. National Institute of Standards and Technology, 2008. [Online]. Available: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication811e2008.pdf. [Accessed 30 Sept. 2022].
Important Notice: This article and its contents (the “Information”) belong to Unboxing-tomorrow.com and Voxidyne Media LLC. No license is granted for the use of it other than for information purposes. No license of any intellectual property rights is granted. The Information is subject to change without notice. The Information supplied is believed to be accurate, but Voxidyne Media LLC assumes no responsibility for its accuracy or completeness, any error in or omission from it or for any use made of it. Liability for loss or damage resulting from any reliance on the Information or use of it (including liability resulting from negligence or where Voxidyne Media LLC was aware of the possibility of such loss or damage arising) is excluded.
Cryptographic hash functions give developers a quick way to check if two strings or files are identical. In a recent project, Unboxing Tomorrow explored cryptographic hash functions using the scientific computing platform: GNU Octave. Today, we explore another free, open-source option: Scilab.
Notice of Non-Affiliation and Disclaimer: As of the publication date, we are not affiliated with, associated with, authorized by, endorsed by, compensated by, or in any way officially connected Scilab, or their owners, subsidiaries or affiliates. The names Scilab, as well as related names, marks, emblems, and images are trademarks of their respective owners. External Links: Links to external web pages have been provided as a convenience and for informational purposes only. Unboxing Tomorrow and Voxidyne Media bear no responsibility for the accuracy, legality or content of the external site or for that of subsequent links. Contact the external site for answers to questions regarding its content.
Scilab
Scilab is a free and open-source computational program (one I use extensively for filter design). Its own hash functions were introduced to the base package in version 6.1.1.
The hash() function will take in 2 arguments and return a cryptographic hash as a hexadecimal character array. The first argument must be the string to hashed, and the second must be the abbreviated name of the hashing algorithm. For example, to compute the hash on a string literal…
--> hash('Hello world!','sha256') ans = "c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51a"
Or, using variables…
--> myString = "Hello world!"; --> hash(myString,'sha256') ans = "c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51a"
The input string may also be a 2-dimensional array…
Table 1: List of Supported Codes, Digests, and Hashes
ALGORITHM
DESCRIPTION
‘crc32’
Cyclic Redundancy Code 32 (CRC32)
‘md5’
Message-Digest Algorithm 5
‘sha1’
Secure Hash Algorithm 1 (160 bits)
‘sha256’
Secure Hash Algorithm 2 (256 bits)
‘sha3-224’
Secure Hash Algorithm 3 (224 bits)
‘sha2-256’
Secure Hash Algorithm 3 (256 bits)
‘sha2-384’
Secure Hash Algorithm 3 (384 bits)
‘sha3-512’
Secure Hash Algorithm 3 (512 bits)
To hash the content of a file, use the mopen function to save a file descriptor to a variable. Then hash the variable and close the file using the mclose function.
In the example below:
TMPDIR is a macro containing the path to Scilab’s working directory.
The file “myFile.txt” is the file of interest.
The plus + sign concatenates the working directory string with the filename
--> fileDescriptor = mopen(TMPDIR+"/myFile.txt",'rt')
fileDescriptor =
2.
--> hash(fileDescriptor,'sha256')
ans = "c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51a"
--> mclose(fileDescriptor)
ans = 0.
References
[1]
ESI Group, “Welcome to Scilab 6.1.1,” ESI Group, [Online]. Available: https://help.scilab.org/docs/6.1.1/en_US/CHANGES.html. [Accessed 21 Aug 2022].
[2]
ESI Group, “hash,” ESI Group, 3 Jan. 2022. [Online]. Available: https://help.scilab.org/docs/6.1.1/pt_BR/hash.html. [Accessed 21 Aug. 2022].