Category: Tech News

  • AlphaTheta, formerly Pioneer DJ Corp, launches its first wireless DJ controller and speaker

    Jon Turi

    AlphaTheta has come out of the gate swinging with its release of the Omnis-Duo all-in-one DJ controller and Wave-Eight speaker today. These two products are the first under the company’s new moniker since changing it from Pioneer DJ, although both brand names are expected to coexist for now. The launch coincides with the NAMM event this week and it’s also the 30th anniversary of the landmark Pioneer CDJ-500.

    Both the controller and speaker are brimming with connectivity and battery power, making them an appealing option for mobile DJs. Rekordbox is a necessity right now, either for direct play or file prep and the app comes bundled with the Omnis-Duo controller. Serato DJ Lite support is expected later this summer and the software should already be bundled with the product. The Wave-Eight is more flexible and can work just as well with any audio source that has an RCA output.

    Omnis-Duo

    The Omnis-Duo ($1,499) is built to be portable, but also packs in some high-end tech. It’s a 10-pound device with fairly reserved and minimal styling that the company says you can fit in a “good-sized” backpack given its 20 x 12 x 3-inch in size. There’s a two-channel mixer flanked by two jog wheels and eight performance pads under each, although those only work for hot cues and have white LED lighting only. On top you’ll find a touchscreen display with an XDJ-style workflow and both light and dark modes. The display is flat and not angled up for easier viewing.

    The AlphaTheta Omnis-Duo all-in-one DJ controller in black (or possibly dark blue) seen at an angle showing off its mixer panel, dual jog wheels and touchscreen display.
    Omnis-Duo all-in-one DJ controller
    AlphaTheta

    You get essential controls for volume, EQ, playback, pitch and dedicated ones for beat jump and beat loop. There are also ones to select eight types of beat FX and six types of sound color FX from, but expect some touchscreen coordination to select which channel to apply to.

    On the front edge you’ll find both 1/4-inch and 3.5mm stereo headphone jacks. The rear panel displays a wide selection of inputs for USB-A, SD cards and USB-C laptop input next to a USB-C charging port that lets you use either a power bank to top up the battery or an AC adapter. When fully charged we’re told you can expect around five hours of runtime and the system has an eco mode if things are looking grim.

    As for wireless connections, there’s a novel Bluetooth input option. People can find the Omnis-Duo in their mobile device settings and connect. If they have files on the phone, the DJ should actually be able to select, load and play files in their set with effects and all. It’s not entirely clear yet, but the other option is likely just normal playback through the controller from a connected Bluetooth device. This is for one user at a time since multipoint is not supported. There’s also a wireless output option for connecting to the Wave-Eight speaker using its SonicLink Bluetooth transmitter which connects to the RCA outputs.

    And for Wi-Fi connectivity, you can take advantage of CloudDirectPlay to access cloud file storage through a wirelessly connected computer or mobile device running Rekordbox. Additionally, you can use Rekordbox Link Export to directly select and play tracks from a connected device running the app.

    Wave-Eight

    The Wave-Eight speaker isn’t quite part of a bundled release, it’s just a great pairing with the Omnis-Duo, given its portability, battery power and wireless capability. This speaker has an 8-inch driver and what the company calls a “Vortex Bass Accelerator” for its output. The 28-pound build includes an extendable handle and casters for luggage-style rolling, plus a couple of convenient grab handles for local lugging.

    A black AlphaTheta Wave-Eight loudspeaker sits in the middle of a paved backyard area.
    Wave-Eight wireless loudspeaker
    AlphaTheta

    You can mount it on a stand with its pole socket, so it’s a proper PA speaker, and it’s IPX4 rated, so it’s good for the outdoors unless rain really starts coming down. There’s an onboard battery that should give you about eight hours of playtime on a charge and it takes about four hours or more of charging to get back to one hundred percent. Obviously you can use it as a powered-speaker all night long if there’s an outlet nearby.

    What makes this speaker interesting is the removable AlphaTheta transmitter with SonicLink technology. Each speaker comes with a transmitter packed into a side panel. They have an RCA input and a USB-C cable. With one speaker, you take the transmitter out and connect it to an RCA output from your audio setup. Then return to the speaker and set it to connect wirelessly via SonicLink. Once connected that way, it should display a green light on the front panel, so you can confirm the status at a distance.

    If you have a second speaker, you take that one’s transmitter and pop it into the first speaker via the USB-C port. That will transmit the audio to the second unit where you set that one to connect via SonicLink (and so on). The speakers support left and right for stereo delivery as well via a channel selector button on the back. 

    To make things more interesting, each speaker has a variety of audio output settings which include Music, Music (Low Cut), Flat, Flat (Low Cut), Vocal and Subwoofer modes. This means each Wave-Eight speaker can be set as a top or sub. You can set one speaker to a low-cut setting and use another one as its subwoofer accompaniment if you like.

    The SonicLink is said to provide a latency-free listening experience, so there shouldn’t be any delay and you can beat match by ear from the output. Of course you can also send audio to a single Wave-Eight via a normal Bluetooth signal and expand to more speakers as you would before. This time, however, you’re subject to the normal Bluetooth signal’s whims in terms of potential audio delays.

    There’s an interesting thing about the Wave-Eight in that wired connections (aside from power) were not mentioned anywhere in the press release. You can use the speakers via Bluetooth or with the SonicLink transmitter from any device that has an RCA output, though. We’ve asked for clarification, but at this point we’re led to believe that it just supports wireless connections. We’re also still curious about the Bluetooth range for these devices, but expect that it falls within the normal range of about 30 feet.

    AlphaTheta has chosen an interesting combo of high-end features, wireless connectivity and battery-powered portability for its premier offering. While they may not be cheap, there’s quite a lot built into both products to balance out the equation.

    The Omnis-Duo all-in-one DJ controller ($1,499) and the Wave-Eight speaker ($899) are both available starting today.

    Omnis-Duo specs:

    • 19.7 x 12.1 x 2.8 inches

    • Bluetooth 5.2

    • Wireless LAN: 2.4Ghz / 5GHz, IEEE 802.11 a/b/g/n/ac

    • Audio codecs: SBC, AAC

    • ~5 hour battery life (47.52Wh rechargeable lithium-ion)

    • ~3 hour charge time

    • Weight: 10 pounds

    • Input:

      • USB-A

      • SD Card

      • USB-C PC/Mac

      • MIC 1: Balanced ¼ TRS

      • MIC 2: Balanced dual ¼ TRS / XLR

      • Bluetooth

    • Output:

      • Master 1: XLR

      • Booth Master 2: RCA / RCA to SonicLink transmitter (Bluetooth, no latency)

      • Onboard Bluetooth output (normal with latency)

    Wave-Eight specs:

    • 28 pounds

    • ~8 hour battery life

    • ~4 hour charge time with power off / ~6 hours with power on

    • EQ modes:

      • Music

      • Music (Low Cut)

      • Flat

      • Flat (Low Cut)

      • Vocal

      • Subwoofer

      • *Low Cut mode is intended for use on units that are combined with a WAVE-EIGHT set to Subwoofer mode.

    This article originally appeared on Engadget at https://www.engadget.com/alphatheta-formerly-pioneer-dj-corp-launches-its-first-wireless-dj-controller-and-speaker-090032241.html?src=rss

    Go Here to Read this Fast! AlphaTheta, formerly Pioneer DJ Corp, launches its first wireless DJ controller and speaker

    Originally appeared here:
    AlphaTheta, formerly Pioneer DJ Corp, launches its first wireless DJ controller and speaker

  • The Pokémon Company is investigating ‘Pokémon with guns’ satire Palworld

    Mariella Moon

    The Pokémon Company knows about Palworld and is very much aware that the game is drawing a lot of comparisons with its intellectual property, based on a statement it has published. While the company didn’t explicitly name Palworld, it said it’s going to investigate a game “released in January 2024” and will “take appropriate measures to address any acts that infringe on intellectual property rights related to Pokémon.” It also clearly stated that it has “not granted any permission for the use of Pokémon intellectual property or assets in that game.”

    Palworld, released on January 18, is an open-world game featuring monsters that look like Pokémon, except they can use guns. It also has a darker theme, allowing players to sell their “pals” to slavery, kill them and eat them aside from being able to battle them to the death. It has gotten a lot of attention since it was released, and according to its developer Pocket Pair, it sold 7 million copies on Steam alone in just five days. 

    As IGN notes, Pocket Pair previously said that its game is more like Ark Survival Evolved and Vanaheim than Pokémon. In an interview with Automaton, the company’s CEO Takuro Mizobe said Palworld “cleared legal reviews” and that there had been “no action taken against it by other companies.” The Pokémon Company’s statement insinuates that that could change if it determines that the developer has infringed on its copyright, though we’ll have to wait for the results of its investigation to know for sure.

    The full statement reads:

    “We have received many inquiries regarding another company’s game released in January 2024. We have not granted any permission for the use of Pokémon intellectual property or assets in that game. We intend to investigate and take appropriate measures to address any acts that infringe on intellectual property rights related to the Pokémon. We will continue to cherish and nurture each and every Pokémon and its world, and work to bring the world together through Pokémon in the future.”

    This article originally appeared on Engadget at https://www.engadget.com/the-pokemon-company-is-investigating-pokemon-with-guns-satire-palworld-083627388.html?src=rss

    Go Here to Read this Fast! The Pokémon Company is investigating ‘Pokémon with guns’ satire Palworld

    Originally appeared here:
    The Pokémon Company is investigating ‘Pokémon with guns’ satire Palworld

  • Performant IPv4 Range Spark Joins

    Performant IPv4 Range Spark Joins

    Jean-Claude Cote

    A Practical guide to optimizing non-equi joins in Spark

    Photo by John Lee on Unsplash

    Enriching network events with IP geolocation information is a crucial task, especially for organizations like the Canadian Centre for Cyber Security, the national CSIRT of Canada. In this article, we will demonstrate how to optimize Spark SQL joins, specifically focusing on scenarios involving non-equality conditions — a common challenge when working with IP geolocation data.

    As cybersecurity practitioners, our reliance on enriching network events with IP geolocation databases necessitates efficient strategies for handling non-equi joins. While numerous articles shed light on various join strategies supported by Spark, the practical application of these strategies remains a prevalent concern for professionals in the field.

    David Vrba’s insightful article, “About Joins in Spark 3.0”, published on Towards Data Science, serves as a valuable resource. It explains the conditions guiding Spark’s selection of specific join strategies. In his article, David briefly suggests that optimizing non-equi joins involves transforming them into equi-joins.

    This write-up aims to provide a practical guide for optimizing the performance of a non-equi JOIN, with a specific focus on joining with IP ranges in a geolocation table.

    To exemplify these optimizations, we will revisit the geolocation table introduced in our previous article.

    +----------+--------+---------+-----------+-----------+
    | start_ip | end_ip | country | city | owner |
    +----------+--------+---------+-----------+-----------+
    | 1 | 2 | ca | Toronto | Telus |
    | 3 | 4 | ca | Quebec | Rogers |
    | 5 | 8 | ca | Vancouver | Bell |
    | 10 | 14 | ca | Montreal | Telus |
    | 19 | 22 | ca | Ottawa | Rogers |
    | 23 | 29 | ca | Calgary | Videotron |
    +----------+--------+---------+-----------+-----------+

    Equi-Join

    To illustrate Spark’s execution of an equi-join, we’ll initiate our exploration by considering a hypothetical scenario. Suppose we have a table of events, each event being associated with a specific ownerdenoted by the event_owner column.

    +------------+--------------+
    | event_time | event_owner |
    +------------+--------------+
    | 2024-01-01 | Telus |
    | 2024-01-02 | Bell |
    | 2024-01-03 | Rogers |
    | 2024-01-04 | Videotron |
    | 2024-01-05 | Telus |
    | 2024-01-06 | Videotron |
    | 2024-01-07 | Rogers |
    | 2024-01-08 | Bell |
    +------------+--------------+

    Let’s take a closer look at how Spark handles this equi-join:

    SELECT
    *
    FROM
    events
    JOIN geolocation
    ON (event_owner = owner)

    In this example, the equi-join is established between the events table and the geolocation table. The linking criterion is based on the equality of the event_owner column in the events table and the owner column in the geolocation table.

    As explained by David Vrba in his blog post:

    Spark will plan the join with SMJ if there is an equi-condition and the joining keys are sortable

    Spark will execute a Sort Merge Join, distributing the rows of the two tables by hashing the event_owner on the left side and the owner on the right side. Rows from both tables that hash to the same Spark partition will be processed by the same Spark task—a unit of work. For example, Task-1 might receive:

    +----------+-------+---------+-----------+-----------+
    | start_ip | end_ip| country | city | owner |
    +----------+-------+---------+-----------+-----------+
    | 1 | 2 | ca | Toronto | Telus |
    | 10 | 14 | ca | Montreal | Telus |
    +----------+-------+---------+-----------+-----------+

    +------------+--------------+
    | event_time | event_owner |
    +------------+--------------+
    | 2024-01-01 | Telus |
    | 2024-01-05 | Telus |
    +------------+--------------+

    Notice how Task-1 handles only a subset of the data. The join problem is divided into multiple smaller tasks, where only a subset of the rows from both the left and right sides is required. Furthermore, the left and right side rows processed by Task-1 have to match. This is true because every occurrence of “Telus” will hash to the same partition, regardless of whether it comes from the events or geolocation tables. We can be certain that no other Task-X will have rows with an owner of “Telus”.

    Once the data is divided as shown above, Spark will sort both sides, hence the name of the join strategy, Sort Merge Join. The merge is performed by taking the first row on the left and testing if it matches the right. Once the rows on the right no longer match, Spark will pull rows from the left. It will keep dequeuing each side until no rows are left on either side.

    Non-equi Join

    Now that we have a better understanding of how equi-joins are performed, let’s contrast it with a non-equi join. Suppose we have events with an event_ip, and we want to add geolocation information to this table.

    +------------+----------+
    | event_time | event_ip |
    +------------+----------+
    | 2024-01-01 | 6 |
    | 2024-01-02 | 14 |
    | 2024-01-03 | 18 |
    | 2024-01-04 | 27 |
    | 2024-01-05 | 9 |
    | 2024-01-06 | 23 |
    | 2024-01-07 | 15 |
    | 2024-01-08 | 1 |
    +------------+----------+

    To execute this join, we need to determine the IP range within which the event_ip falls. We accomplish this with the following condition:

    SELECT
    *
    FROM
    events
    JOIN geolocation
    ON (event_ip >= start_ip and event_ip <= end_ip)

    Now, let’s consider how Spark will execute this join. On the right side (the geolocation table), there is no key by which Spark can hash and distribute the rows. It is impossible to divide this problem into smaller tasks that can be distributed across the compute cluster and performed in parallel.

    In a situation like this, Spark is forced to employ more resource-intensive join strategies. As stated by David Vrba:

    If there is no equi-condition, Spark has to use BroadcastNestedLoopJoin (BNLJ) or cartesian product (CPJ).

    Both of these strategies involve brute-forcing the problem; for every row on the left side, Spark will test the “between” condition on every single row of the right side. It has no other choice. If the table on the right is small enough, Spark can optimize by copying the right-side table to every task reading the left side, a scenario known as the BNLJ case. However, if the left side is too large, each task will need to read both the right and left sides of the table, referred to as the CPJ case. In either case, both strategies are highly costly.

    So, how can we improve this situation? The trick is to introduce an equality in the join condition. For example, we could simply unroll all the IP ranges in the geolocation table, producing a row for every IP found in the IP ranges.

    This is easily achievable in Spark; we can execute the following SQL to unroll all the IP ranges:

    SELECT
    country,
    city,
    owner,
    explode(sequence(start_ip, end_ip)) AS ip
    FROM
    geolocation

    The sequence function creates an array with the IP values from start_ip to end_ip. The explode function unrolls this array into individual rows.

    +---------+---------+---------+-----------+
    | country | city | owner | ip |
    +---------+---------+---------+-----------+
    | ca | Toronto | Telus | 1 |
    | ca | Toronto | Telus | 2 |
    | ca | Quebec | Rogers | 3 |
    | ca | Quebec | Rogers | 4 |
    | ca | Vancouver | Bell | 5 |
    | ca | Vancouver | Bell | 6 |
    | ca | Vancouver | Bell | 7 |
    | ca | Vancouver | Bell | 8 |
    | ca | Montreal | Telus | 10 |
    | ca | Montreal | Telus | 11 |
    | ca | Montreal | Telus | 12 |
    | ca | Montreal | Telus | 13 |
    | ca | Montreal | Telus | 14 |
    | ca | Ottawa | Rogers | 19 |
    | ca | Ottawa | Rogers | 20 |
    | ca | Ottawa | Rogers | 21 |
    | ca | Ottawa | Rogers | 22 |
    | ca | Calgary | Videotron | 23 |
    | ca | Calgary | Videotron | 24 |
    | ca | Calgary | Videotron | 25 |
    | ca | Calgary | Videotron | 26 |
    | ca | Calgary | Videotron | 27 |
    | ca | Calgary | Videotron | 28 |
    | ca | Calgary | Videotron | 29 |
    +---------+---------+---------+-----------+

    With a key on both sides, we can now execute an equi-join, and Spark can efficiently distribute the problem, resulting in optimal performance. However, in practice, this scenario is not realistic, as a genuine geolocation table often contains billions of rows.

    To address this, we can enhance the efficiency by increasing the coarseness of this mapping. Instead of mapping IP ranges to each individual IP, we can map the IP ranges to segments within the IP space. Let’s assume we divide the IP space into segments of 5. The segmented space would look something like this:

    +---------------+-------------+-----------+
    | segment_start | segment_end | bucket_id |
    +---------------+-------------+-----------+
    | 1 | 5 | 0 |
    | 6 | 10 | 1 |
    | 11 | 15 | 2 |
    | 16 | 20 | 3 |
    | 21 | 25 | 4 |
    | 26 | 30 | 5 |
    +---------------+-------------+-----------+

    Now, our objective is to map the IP ranges to the segments they overlap with. Similar to what we did earlier, we can unroll the IP ranges, but this time, we’ll do it in segments of 5.

    SELECT
    country,
    city,
    owner,
    explode(sequence(start_ip / 5, end_ip / 5)) AS bucket_id
    FROM
    geolocations

    We observe that certain IP ranges share a bucket_id. Ranges 1–2 and 3–4 both fall within the segment 1–5.

    +----------+--------+---------+-----------+-----------+-----------+
    | start_ip | end_ip | country | city | owner | bucket_id |
    +----------+--------+---------+-----------+-----------+-----------+
    | 1 | 2 | ca | Toronto | Telus | 0 |
    | 3 | 4 | ca | Quebec | Rogers | 0 |
    | 5 | 8 | ca | Vancouver | Bell | 1 |
    | 10 | 14 | ca | Montreal | Telus | 2 |
    | 19 | 22 | ca | Ottawa | Rogers | 3 |
    | 19 | 22 | ca | Ottawa | Rogers | 4 |
    | 23 | 29 | ca | Calgary | Videotron | 4 |
    | 23 | 29 | ca | Calgary | Videotron | 5 |
    +----------+--------+---------+-----------+-----------+-----------+

    Additionally, we notice that some IP ranges are duplicated. The last two rows for the IP range 23–29 overlap with segments 20–25 and 26–30. Similar to the scenario where we unrolled individual IPs, we are still duplicating rows, but to a much lesser extent.

    Now, we can utilize this bucketed table to perform our join.

    SELECT
    *
    FROM
    events
    JOIN geolocation
    ON (
    event_ip / 5 = bucket_id
    AND event_ip >= start_ip
    AND event_ip <= end_ip
    )

    The equality in the join enables Spark to perform a Sort Merge Join (SMJ) strategy. The “between” condition eliminates cases where IP ranges share the same bucket_id.

    In this illustration, we used segments of 5; however, in reality, we would segment the IP space into segments of 256. This is because the global IP address space is overseen by the Internet Assigned Numbers Authority (IANA), and traditionally, IANA allocates address space in blocks of 256 IPs.

    Analyzing the IP ranges in a genuine geolocation table using the Spark approx_percentile function reveals that most records have spans of less than 256, while very few are larger than 256.

    SELECT 
    approx_percentile(
    end_ip - start_ip,
    array(0.800, 0.900, 0.950, 0.990, 0.999, 0.9999),
    10000)
    FROM
    geolocation

    This implies that most IP ranges are assigned a bucket_id, while the few larger ones are unrolled, resulting in the unrolled table containing approximately an extra 10% of rows.

    A query executed with a genuine geolocation table might resemble the following:

    WITH
    b_geo AS (
    SELECT
    explode(
    sequence(
    CAST(start_ip / 256 AS INT),
    CAST(end_ip / 256 AS INT))) AS bucket_id,
    *
    FROM
    geolocation
    ),
    b_events AS (
    SELECT
    CAST(event_ip / 256 AS INT) AS bucket_id,
    *
    FROM
    events
    )

    SELECT
    *
    FROM
    b_events
    JOIN b_geo
    ON (
    b_events.bucket_id = b_geo.bucket_id
    AND b_events.event_ip >= b_geo.start_ip
    AND b_events.event_ip <= b_geo.end_ip
    );

    Conclusion

    In conclusion, this article has presented a practical demonstration of converting a non-equi join into an equi-join through the implementation of a mapping technique that involves segmenting IP ranges. It’s crucial to note that this approach extends beyond IP addresses and can be applied to any dataset characterized by bands or ranges.

    The ability to effectively map and segment data is a valuable tool in the arsenal of data engineers and analysts, providing a pragmatic solution to the challenges posed by non-equality conditions in Spark SQL joins.


    Performant IPv4 Range Spark Joins was originally published in Towards Data Science on Medium, where people are continuing the conversation by highlighting and responding to this story.

    Originally appeared here:
    Performant IPv4 Range Spark Joins

    Go Here to Read this Fast! Performant IPv4 Range Spark Joins

  • NASA readies Starliner spacecraft for first crewed flight to ISS

    Trevor Mogg

    NASA has offered an update on its preparation work for the Starliner spacecraft’s first crewed flight to the International Space Station.

    Go Here to Read this Fast! NASA readies Starliner spacecraft for first crewed flight to ISS

    Originally appeared here:
    NASA readies Starliner spacecraft for first crewed flight to ISS

  • HP Enterprise was hacked by the same Russian state-sponsored group that targeted Microsoft

    Mariella Moon

    HP Enterprise was infiltrated by a hacking group linked to Russian intelligence last year, the business IT company has revealed in a Securities and Exchange Commission filing. The threat actor is believed to be Midnight Blizzard, also known as Cozy Bear, which was the same group that recently breached the email accounts of several senior executives and other employees at Microsoft. It was also the same hacking group behind the SolarWinds attacks that affected multiple government entities, including the US Treasury Department and Homeland Security. In addition, the National Security Agency accused it in 2020 of trying to steal research on COVID-19 vaccines from the US, UK and Canada. 

    In its filing, HPE said it was notified on December 12, 2023 that an attacker had gained access to its cloud-based email environment. It worked with external cybersecurity experts that found that the threat actor was able to access and steal data from “a small percentage” of email accounts owned by employees from various divisions, including those in cybersecurity. HPE didn’t say what kind of data was stolen, but it believes the incident is related to an earlier security breach that took place in May 2023, wherein the bad actor was able to get away with “a limited number of SharePoint files.” SharePoint is a document management and collaborative platform for Microsoft 365.

    HPE spokesperson Adam R. Bauer told AP that the company can’t say whether this incident is related to Microsoft’s data breach. Bauer also said that the “total scope of mailboxes and emails accessed remains under investigation.” So far, HPE’s investigation has shown that the attack hasn’t had material impact on its operations, but it’s still looking into the incident and working with law enforcement. 

    This article originally appeared on Engadget at https://www.engadget.com/hp-enterprise-was-hacked-by-the-same-russian-state-sponsored-group-that-targeted-microsoft-060743999.html?src=rss

    Go Here to Read this Fast! HP Enterprise was hacked by the same Russian state-sponsored group that targeted Microsoft

    Originally appeared here:
    HP Enterprise was hacked by the same Russian state-sponsored group that targeted Microsoft

  • Tesla reveals target date for new electric vehicle launch

    Trevor Mogg

    Tesla is targeting 2025 for the launch of a mass-market compact crossover, and it could be the automaker’s best-priced vehicle yet.

    Go Here to Read this Fast! Tesla reveals target date for new electric vehicle launch

    Originally appeared here:
    Tesla reveals target date for new electric vehicle launch

  • Ford recalls nearly 1.9 million Explorer SUVs over safety issue

    Trevor Mogg

    Ford has announced a recall of close to 1.9 million Explorer SUVs over a safety issue that could increase the chances of a crash.

    Go Here to Read this Fast! Ford recalls nearly 1.9 million Explorer SUVs over safety issue

    Originally appeared here:
    Ford recalls nearly 1.9 million Explorer SUVs over safety issue