Day to Day, Reviews

Tecware Q5 Headset – First Impression

Few days back, my headset mic as well as my laptop mic went on a vacation to lala land. They just could not capture my voice clearly enough without interference and that is really a handicap at work. Apparently, one of my friends is having similar problems and we decided to go online shopping for a new mic, especially we need to go on Microsoft Teams meeting these days.

We had a few options, ranging from Razer USB headsets to Condenser Mics. Eventually, we settled for Tecware Q5 USB Headset. One main reason being it is affordable and fulfills the core requirements. There isn’t a need for fanciful RGB lighting and/or controls. The braided wires are plus though for clumsy paws and the online discount certainly helps here. With that, we placed our order to Dynacore Technologies via Shopee.

The headset was delivered in about 2 days via Ninjavan and the unboxed result is as shown below.

The Headset
Specifications
What’s in the box

The audio quality ain’t too bad and the best of it is that the mic is working for me! The detachable mic is a nice feature though it can get easily be unplugged from time to time. Hence you might want to check if the mic is plugged in properly during troubleshooting. It is not the lightest headset but it is comfortable enough. The RGB feature on this headset are the glowing logos at each side of the earpiece. For any additional features or configuration, you will have to download the software via the link provided below.

Since it is using USB instead of analog audio/mic jacks, I supposed it uses drivers and audio hardware that is independent from my laptop. As a result, the mic worked wonderfully even though the ones inbuilt on the laptop and external mic via the analog audio/mic port are wonky. I’m pleased with this purchase and glad that it was the right choice.

For more details on the headset, visit https://www.tecware.co/q5


Shopping for a headset for work and/or games? Use my referral code PLAIN252 to get S$10.00 off your first purchase! Download Shopee now and enjoy hot deals at the best prices!

Coding, Day to Day

NAV2016 – How to Import Excel Data into NAV

Note: This is only for Microsoft Dynamics NAV, NOT Business Central. While the principle behind it is the same, Business Central uses different objects to achieve the intended result. What we are focused on in this post is how to import data from an excel spreadsheet to NAV (example, transfer data from excel to cash receipt journal records). This will be a brief guide on the import aspect.

Variables Required

  • ExcelBuffer – Record “ExcelBuffer” – need to declare as a global variable
  • FileManagement – Codeunit “File Management”
  • ServerFileName – Text
  • SheetName – Text
  • TotalRows – Integer
  • RowNo – Integer
  • And any other variables to store the excel cell data

Supporting Function

// Get Value At Cell Function 
LOCAL GetValueAtCell(RowNo : Integer;ColNo : Integer) : Text
IF ExcelBuffer.GET(RowNo,ColNo) THEN
  EXIT(ExcelBuffer."Cell Value as Text")
ELSE
  EXIT('');

The above function is required to get the value from a specific cell in the excel spreadsheet based on the Row and Column of the cell and return the result as a string. You will have to do the necessary conversion to other data type if you want a numeric value and so on.

Import Function

First we will need to create a function (i.e. in a codeunit) that can be called from a page to trigger this import function. In this function we will trigger the dialog for the user to select the excel spreadsheet to import and also to select which sheet to import (if there are multiple excel sheets). The code snippet for this is as shown below

// Sample Import Call Function that takes in some parameters
ImportItemJournalExcel(JournalBatchName : Code[10];JournalTemplateName : Code[10])

// Get Import File
ServerFileName := FileManagement.UploadFile('Please select import File','File');
IF ServerFileName ='' THEN
  EXIT;

// Get Sheet
SheetName := ExcelBuffer.SelectSheetsName(ServerFileName);
IF SheetName = '' THEN
  EXIT;

Additional Information: It might be possible to import a zip file of excel spreadsheets for processing and/or also to process multiple sheets in an excel file. But we will not be covering this here.

Next step is to open the excel document and get the total number of rows of data.

ExcelBuffer.LOCKTABLE;
ExcelBuffer.OpenBook(ServerFileName,SheetName);
ExcelBuffer.ReadSheet;
ExcelBuffer.RESET;
ExcelBuffer.SETCURRENTKEY("Row No.");
IF ExcelBuffer.FINDLAST THEN
  TotalRows := ExcelBuffer."Row No.";

Once we know the total number of rows, we need to identify which row to start taking data from and start looping the spreadsheet to extract the data. And in this loop, you can add the codes to insert the data to a record (example Gen. Journal Lines)

FOR RowNo:=3 TO TotalRows DO BEGIN    // Start from Row 3

  // Get Cell Data
  SampleLocationData := GetValueAtCell(RowNo,2); // Column Number 2 : Location Code
  SamplePONo := GetValueAtCell(RowNo,8); // Column Number 8 : PO Number
  SampleProdCode := GetValueAtCell(RowNo,13); // Column Number 13 : Product Code
  SampleProdDescr := GetValueAtCell(RowNo,16); // Column Number 16 : Product Description  

  //  Do any logic here (i.e. insertion)

  CustomRecord.INIT;
  CustomRecord.LocationCode := SampleLocationData;
  CustomRecord.PONo := samplePONo;
  // continue adding data as needed
  CustomRecord.INSERT();


END;

Finally to end it off.

ExcelBuffer.CloseBook;

MESSAGE('Excel Import Completed');

That’s all that there is to it.

Day to Day

Warship Legend – Main Interface at a Glance (2)

This is Part 2 of interface guide for Warship Legend. If you have missed out Part 1, click here for a quick recap! We hope that you had enjoyed the earlier guide!

#18 Training Center

The training center comprises of the following:

  • Daily Instance
  • Cruise
  • Joint Expedition
  • War Game

In Daily Instance, you get to clock a limited amount of free resources daily. This will increase to a maximum limit as you progress up the levels. In Cruise, you assign a combination of ships based on the mission requirement to collect resources after a specific duration. The number of mission increases based on your VIP level (which you need to pay money to level up). Joint Expedition and War Game and quite similar in concept where by you fight with AI ships to advance the level in that area of game (sort of a mini game/side quest) to gain resources.

#19 Club

The club is where you expend your chips in roulette style. There are three types of chips – Normal, Gold and Mysterious chips – that can be collected in game. Mysterious chips are very hard to get unless you buy them with real money. The normal roulette will bag you common ships and resources. The gold/special roulette will give you the chance to get some rare ships shards. Mysterious roulette will give you the chance to get some legendary/titanium warship shards. There is also a mini game – Top Gun – in the club which does not offer anything for the gameplay itself. A minor distraction I would say.

#20 War Schedule

This place gives you a brief overview/timeline of game events in Warship Legends so that you can plan and accumulate your resources accordingly.

#21 Legion

This area is sort of a clan management and activity area. You organize/manage your team members and sign up for legion events such as Waterway Conflict and Landing Operations for Team v Team battles. There is also a Legion Instance event where your legion can work together to fight against AI ships to advance up the level. These events offer some resources that you can use to purchase items from the market.

#22 Archives Bureau

Archives Bureau stores the storyline and also provides information on different classes and types of ships.

#23 Control Tower

Control Tower is the area where you have Championship, Master League and Tactical Tournament leader board competition. The higher you can advance, the better the rewards you can get!

That’s all for the interface guide! Thank you!

Day to Day, Thoughts

What do you want?

Whenever someone complains incessantly, especially if you are the one doing it, ask them or yourself this simple question – “What do you want?“. In most cases, it should shut the other party up (no guarantees), but if you are serving this question to yourself, it is important that you answer it honestly. No beating about the bush, no avoiding it.

Complaining can be viewed as a form of stress relief, a bit and ineffective method. It serves no constructive function and waste energy for everyone. It doesn’t help with the situation because it is all in the mind and there are no actions being taken to resolve it. Asking this question, “What do you want?“, puts a pause on the runaway mental train and kickstarts the mind to view the issue from another angle (hopefully).

If there are no answers, then it is advisable to put it to rest since likely there are no solutions to it. Brooding and overthinking it would just further waste more energy and create more pain. It’s not worth it. On the other hand, if there are answers that came out of this question, then the next question to ask would be “What are you going to do about it?“.

What are you going to do about it?“, prepares the mind to translate this thought to something actionable. Something that one can do to resolve this conflict that is inside the head. Make sure that the actionable items are positive and constructive.

I confess to being a serial complainer and i will do the following once I am aware of my mistakes.

  1. Write down on a piece of paper what i am complaining about
  2. Answer the question “What do you want?’ on the paper
  3. If there are answers for (2), then answer “What are you going to do about it?” on the paper
  4. Translate (3) into actionable items (i.e. adding to calendar/task)
  5. Make sure they are positive and constructive before acting upon it

I prefer to write my thoughts on paper instead of processing it in the mind because it slows down the racing mind. From there, one can calmly view and comprehend what is going on and make a more realistic and practical judgement. At the same time, it keeps the focus on what matters at that moment instead of allowing the “monkey” mind to start going off tangent and overthinking again.

Hope that this article is of help to anyone out there. How do/would you handle this issue? What is your tried and tested method? If you have any better ideas, let me know too.