Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Tuesday, March 13, 2012

Guitars, Technology, and Life

As is probably evidenced by the 3 articles I posted in quick succession today, I am indeed back to updating my blog. I will probably start documenting some of my more eccentric hacks and configuration files here, simply for future reference for both myself and anyone interested. I may also start reviewing some of the software I use daily (and also get into a review of Star Wars: The Old Republic, which I'm pretty much addicted to at the moment). We shall see what I get done while I'm on semester break.

I do also plan to start documenting useful practices/websites for guitar, as well as a review of aLaska Piks (fingerpicks) once I get my batch. Once I get my hands on some of the new Ernie Ball Cobalt strings (as well as a pack of Earthwood strings), I'll also put a review up, comparing them to my current strings (Ernie Ball Coated Regular Slinky (0.10"), and Ernie Ball Coated Acoustic (0.11")). I've also ordered a glass slide along with the strings (though the Cobalts aren't in stock yet, and are effectively delaying my order until their arrival), which I will compare with my current steel slide. I also hope to find a decent audio recorder at some point, which I will also review (possibly with sound clips - we'll see how it sounds!).

Outside of Guitar & Technology, I also hope to bring some of my Japanese/Mandarin practice to my blog. I'll aim to review/discuss books and software I find useful for practicing those languages, and possibly also write a brief introduction or so to either language. If anyone has any suggestions, feel free to post them in the comment section below.

I sincerely hope this post doesn't become like the last "and I'm back" post, though I can't make any promises. I think I've come up with a fairly varied series of topics, meaning I will probably not run out of stuff to write. Once I figure out a decent method for posting code snippets on blogger (trying out one on my Custom Dates post), I'll also probably move some of my scripts over from pastebin. Basically I'm hoping to turn this into a hub for my technological, musical, and language-oriented knowledge. Once I've cleaned up my github a bit, I'll also be posting a link to it here, since it should offer the most up-to-date scripts and settings.

Xorg tty switching is wrong

I found this issue (literally about 10 minutes ago) on my PC after a recent update. Basically, in any tty screens switching was the normal ctrl+alt+Fx setup, but the moment I tried to do the same from my xserver, I wasn't able to do so. For some reason, the keyboard shortcut from X was shift + Fx, which is a keybinding often used by other programs (Blender, for example). After a bit of looking (and googling, though I didn't find much in the way of concise answers), I found out that it was due to my .Xmodmap file I was using. For whatever reason, the entries for my F1-F12 keys were totally messed up. A bit of trial and error didn't let me figure out the correct entries, so I simply reset my keyboard (setxkbmap de), and then found the entry (xmodmap -pke|grep VT). Turns out that the entries should look as follows:

keycode 67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
I figured I should document this here, in case anyone else has a similar issue (or if I have the issue again...). For anyone too lazy to count, that is 6 F1's, and on the 7th entry, you write XF86Switch_VT_1 (or replace F1 and VT_1 with whatever Fx key you're working on). Once you've updated your .Xmodmap file, simply reload it with xmodmap ~/.Xmodmap (you may need to change the path if you're using a different one).

Thursday, February 3, 2011

First update of the new year!

Well, happy new year to everyone! My year's been off to a hectic start with university, and my upcoming exams, so blogging has fallen a bit to the wayside. However, I'll be starting my semester break in a couple of weeks, and plan to work on a few little projects of mine during my time off. I plan to work on a few c++ programs from my (admittedly long) list of ideas, while getting comfortable with creating makefiles/installing C++ programs in Linux. From there I may choose an open-source project to develop for, but that depends entirely on how long it takes me to get comfortable with it all. I'm also toying with the idea of maybe playing around with some circuitry (something like Arduino boards, just without the enormous shipping costs from the US to Germany!). If anyone has a company/website they know of that has decent shipping costs, please post it below in the comments! Besides that, I plan to expand my knowledge of VHDL and Assembly in preparation for my second semester. I will, hopefully, mix the Assembly with my C++ programming, in order to leave room for actual relaxing. If anyone has a good book, or website, detailing on how best to go about using Assembly in C++, feel free to leave a comment as well. I also plan to write a few more tutorials for my blog during my time off, so requests are welcome.

As for new stuff I'm intrigued about: Honeycomb (Android 3.0), Gnome 3.0, Motorola XOOM tablet, Mass Effect 3, and an Android 2.2 update that should eventually arrive for my Motorola Milestone. I'm also hoping to upgrade my PC to a core i5-2400 3.1GHz processor, 4GB of DDR3 RAM, and (due to the new processor) a new USB 3.0-ready motherboard. I'm ideally looking to spend <400€, and if anyone has suggestions on motherboards, I'd be interested to hear them (the rest of the hardware I've pretty much already picked out). While I'm at it I may be replacing my computer's case. What I am curious about: Does anyone know how Windows 7 and ArchLinux handles massive hardware changes? I should assume Windows 7 will require a new activation, but Arch should just auto-detect the right drivers for most of the parts I'm planning on swapping out, right? Anything I should be on the look out for?

Also, if anyone has any suggestions as to projects I should look into, interesting snippets of code/news, or a book they recently read and enjoyed (or movie or TV show), feel free to leave me a comment, I'm always looking for new stuff to distract me from my work!

Saturday, July 24, 2010

Theme Overhaul & Update!

Well, now that there's the ability to customize templates, I've made the entire blog a little wider (lets you guys read my code snippets fully). Also, I've gone with a layout and colour/background combo that appeals to me. If you guys have any complaints about any elements of the blog, leave me a comment and I'll take it into consideration (I can't promise every complaint will be acted upon, but the major issues should be resolved). Consequently...if you like the blog like this, let me know!

I'll be updating the guitars post in a few days once I get to my third guitar, for anyone interested. I am also currently learning Japanese and have learned a few things (SCIM, anyone?), which I'll be posting up here soon (I can also post up a link to my vocab list for anyone who's interested - just leave a comment).

Looking forward to getting some feedback,
Lswest

Sunday, May 16, 2010

C++

Lately I've been moving my programming focus from Python to C++, simply because I wanted to experience a compiled language, and compare it with the "slower" scripting languages I often use (perl, bash, python, etc.). Slower insofar as they require libraries to be loaded at runtime. My first step was to create a recursive directory traversal function, since I planned on re-writing a "music catalogue" program I wrote in Python (basically a program that compiles a list of songs) in C++. I also want to add functionality, like specifying if you only want a list of artists, albums, etc. And also specify how it is printed out (i.e. comma-separated for "About Me" type forms, or a normal list).

I ran into a bit of a snag getting the recursion working properly at first, but asking in the ArchLinux Forums gave me the advice I needed, and the method works now without a problem. During that time though, another forum member mentioned that recursion is best avoided (with which I wholeheartedly agree), and who has prompted me now to look into re-writing my method as an iterative method instead of a recursive one. However, I'm still trying to wrap my head around the changes I'd need to create an iterative directory traversal function from the method I've already written. If anyone feels like taking a shot at explaining the differences I'd need to make in my recursive function to make it iterative to me, feel free to leave me a comment. Or, if you'd like to see the code I've written, I've paste-binned it here. If you re-write it into an iterative function, I'd be grateful if you posted a link to it here, in order to spur my thinking processes along.

Besides that, I haven't been up to all too much. Mainly organizing my life. Once I finish the music catalogue program, I'll probably post it up here. Also, I plan to update my blog more regularly once things have settled down here a bit.

Monday, December 21, 2009

How To: Sync iPod Touch 2G using VirtualBox on a Linux Host

Well, the last couple of days have been spent setting up a virtual machine running Windows XP for my syncing needs (I usually use my PC for syncing my iPod, since it runs Windows 7, but when on the road, I will only have my netbook, and require some way to sync it). Therefore I always had the Windows XP partition on my netbook, however, I've not booted it since September, and before that I hadn't booted it for about 4 or 5 months. Since I use it so infrequently, I decided to get rid of the waste of space on my netbook and give that extra space to my media partition, my /home, my /, and possibly install a version of Ubuntu for my Full Circle Magazine articles (just to make sure my methods apply to it, etc.). At the writing of this post, the version of VirtualBox I am using is: 3.1.2-1 (virtualbox_bin PKGBUILD off the AUR). Now, according to some sources, the following step is unnecessary for this version of VirtualBox if you run HAL, but I did it and it's what I will probably continue to do. I will also skip the process of installing VirtualBox (Personal Use Binaries), simply because it varies to a large degree.

Preliminary step:
Add your user to the vboxusers group

sudo gpasswd -a $USER vboxusers

This will add your user to the vboxusers group, so that you can access virtualbox (most installations do not do this by default).

Step 1 (optional step):
Add the following to your /etc/fstab file:
none /proc/bus/usb usbfs auto,busgid=108,busmode=0775,devgid=108,devmode=0664 0 0
Since the layout cuts off the end of the above command, it ends with: "devgid=108,devmode=0664 0 0"
Ensure that you change the groupd ID (108) to whatever group ID is assigned to your vboxusers group. You can check this by issuing:
sudo grep vboxusers /etc/group
Once this is set up, you can force the usbfs to mount by issuing the following command:

sudo mount -a
For those of you who don't know, this will mount all filesystems listed in /etc/fstab.

Step 2:
Set up the guest machine. I installed Windows XP into a virtual machine using 384MB of RAM, 16 bit color, and basically the defaults for everything else (since it was running on a netbook). It's up to you what you allocate to the machine.

Once this is set up, install XP, and install iTunes. Before doing anything else, consider how you're going to store your music. I'm not a fan of copying an entire media library to a virtual machine just so I can continue updating it (and I only allocated 8GB to XP), so I decided to set up my iTunes folder as a VirtualBox shared folder. This is great for me, since I have a separate media partition (of about 70GB) with my Music, Movies, Pictures (and some backups) on an NTFS partition for access between the now dead XP install and any install of Linux I may have. Since this is the case, I created a virtualbox share for /media/Media/Music/iTunes/iTunes Music/ (your path will be different). To do this, install Guest Additions, and go to Devices --> Shared Folders. Set up the Folder and make sure you check the box next to "Make Permanent".
Now, in your XP host, right-click My Computer and choose "map network drive". The server is //vboxsvr/sharename (in my case, iTunes, but it will be whatever you chose previously). I mapped this drive to Z:, simply because I will never use that drive letter and so don't have to worry about any changes. Now on the guest machine, open iTunes, accept the license agreement, and head to the preferences (Edit --> Preferences), then open the "Advanced" tab and change the Music Folder to the Z: drive (or whatever letter you chose), and delete the original entry. This means that is should use the shared folder for any new music, podcasts, videos, etc. (I haven't tested that yet though). Once that's done, you need to add all the media to your iTunes.
This can be done by going to File --> Add Folder to Library, and choosing the iTunes Music folder (only if you have used the iTunes 9 way of organizing music, otherwise you may want to choose the parent directory to your podcasts, videos, etc.). Once the import is done (it can take a while), authorize the computer for any iTunes Store accounts you have, and plug your iPod in.

Step 3:
Syncing the iPod. Once you plug your iPod in, the Linux host will take control of it (which is fine). If you installed the guest additions and rebooted the guest OS, you should be able to go to Devices --> USB Devices --> iPod, and choose it. Give it a moment, and XP should inform you it found a new device (iPod), and begin installing the drivers for it. Once this happens, let it install and wait until it appears in your iTunes window. It will then warn you (if it's set to auto-sync), that some purchases are from another iTunes Library, whereupon you want to choose "transfer to PC" (or words to that effect), so that the purchases are synced to the iTunes folder. Once complete, your iPod should sync without a problem and you should be happier with all that free space.

If you want to update the music on iTunes, you should just import the CD/mp3s to the computer, and copy them to either the "automatically add to iTunes" folder, or add them to the correct folder in the Music sub-directory. iTunes may or may not automatically register/add the files (I haven't tested this yet either), but adding it manually is still less work than rebooting and doing it all there then copying it over to Linux. You can also import the CDs via iTunes in virtualbox and see if the CD will be ripped straight into the shared folder.

Hopefully this is interesting to anyone who was thinking of doing the same. I am quite happy (and surprised) to find that this solution works for me, even on my Samsung N110 netbook (1.6GHz intel atom, 2GB of RAM, 160GB hdd, intel 945GME), and frees up some space (about 50GB, since that's what I had left allocated to Windows). The best thing is I can create a backup of the hard disk, and save all my work, or use snapshots (or both). I know that you can probably sync the iPod to some degree in Linux natively, but I prefer having access to the podcasts I subscribe to (revision3 shows and engadget mostly) via iTunes even on the go.

For those who're curious about my partition layout on my netbook, it's as follows:
3GB Recovery Partition (Samsung)
68.36GB for Media
74.68GB Extended partition
  • 15.01GB /dev/sda5 (my arch root partition)
  • 24.44GB /dev/sda6(my arch /home)
  • 964.81MB /dev/sda7 (my swap partition, that I probably don't need).
  • 34.30GB of as-of-yet unallocated space (will probably become a 15GB Ubuntu /, and 14 GB Ubuntu /home, as to protect my theme settings and custom tweaks to Arch)

Tuesday, October 27, 2009

Gnome 2.28

So, it's been roughly a week since I updated my gnome apps to 2.28 off the archlinux repositories. First impression: GDM seems a lot smoother and more "modern" than it used to, however...configuring it these days can be a real pain. You've got to open the gnome-appearance-manager as the gdm user using
gksudo -u gdm dbus-launch gnome-appearance-properties

Which is fine, I guess, except that it overwrites my theme/GTK settings for my openbox setup, and I have to configure it again, unless I use the exact same settings for GDM (which I ultimately decided on doing). So far that's my biggest problem with gnome 2.28. However, I won't be downgrading, since I have configured GDM for the time being and probably won't be changing it anymore. Another issue is that there are random crashes back to the GDM login screen since GDM starts on tty2 now, as it's the first available getty (when GDM starts), and when the tty2 refreshes, it then kicks you off gdm and has it restart on tty7, as it should actually do from the start. I've put a temporary stop to this by commenting out my tty2 getty entry in /etc/inittab, but I'm so used to my X being on tty7 that it's taking some getting used to. But again, I can live with it, I just see no reason why this new behaviour is there. I am also curious why they decided to not include a configuration tool for GDM itself, besides the usual gnome-appearance-manager, it would just make life easier.

Moving away from GDM, I don't really see too many tangible differences in Gnome 2.28, since I run Openbox, and hardly use any gnome apps besides GDM for logging in and shutting down, etc. I've noticed a few layout changes in the Gnome applications that I ended up using to get GDM to work, and they're nothing intrusive or random, and makes, if anything, the user interface more logical. I honestly don't expect there too be too much of an improvement on the interface level until 3.0 comes out, but I could be wrong. In any case, Gnome 2.28 seems to be a nice update for most Gnome-related applications. There are a few showstoppers with GDM (inability to use themes, changing themes results in overwriting theme settings for user account, starts on tty2, etc.). The tty2 problem could be solved by editing the custom.conf, but sadly they dropped support for the [servers] flag, which, again, seems illogical to me. Also, I use lxappearance in Openbox along with Nitrogen, so that the changes to your themes may not occur if you used gnome-appearance-manager to set them as well.

Hope that you find this opinion (it's not a proper review, it's just my impressions on it) useful,
Lswest

Sunday, September 13, 2009

Kernel 2.6.31-1

Well, time for another update. I thought I'd write up my initial impressions on kernel 2.6.31-1 (from the Archlinux testing repository as of the 11/09/09). I have to say, there are a few things that struck me right off the bat.

Good Things:
- Intel driver performance increased noticeably (smoother, yet cooler), and glxgears (yes, I know it's not a benchmark, but I used it as a comparison check for driver and kernel settings) is up around 280 fps (highest it has ever gone in archlinux).
- Flash videos, while still not perfect, are less jumpy than they were with the old kernel on this netbook (Samsung N110)
- Suspend works (who knows if it's just temporary, but it now works on the Samsung N110, I will post an update with what happens when it moves into the core repository - may be missing a driver or some other updated package)
- It's smoother under heavy load (default configuration, not sure if KMS is enabled or not, I'd say no though, since there's no framebuffer on boot) than its predecessor
- It seems a little bit faster to boot (probably saves about a second or two on boot).

Bad things:
- USB devices aren't working right now (may be because of the fact that I only installed kernel26 and kernel26-firmware from testing, or it's due to an old package that has yet to be updated)
- KMS (as far as I know) still results in no backlight control for this monitor, and that seems to be an intel driver problem.

Overall, I'm happy with the new kernel, even if I can't use usb devices with it for the time being. I'll bet once they move it to core/up the revision to -2, it'll work again.

*UPDATE* USB works again, but I don't think I updated anything for it to work again, it just seems to have decided to be nice again.

Tuesday, September 1, 2009

N110 Scripts

Okay, so I just uploaded all my scripts that I wrote for my N110 netbook (things that I use for audio, wireless toggling, brightness, etc.) to my github.

Link: http://github.com/lswest/scripts/tree/5ea76c78e581a978ea0712ccf1c8a9c134c1a40b/Bash/N110%20Scripts

I will add to it if I write any more scripts, but for the time being that does pretty much all I need (save for a basic few tweaks to other configs, which I'll cover in a post later). If anyone has a request for added functionality, or a suggestion of how to improve a script (removing password prompts, etc.), feel free to leave a comment. I will be thankful for any suggestions, and will integrate as many suggestions as possible.

Wednesday, November 26, 2008

Terminal Commands (Introduction) Part 1

Introduction to *nix Commands

ls [folder] - lists the content of current folder unless another folder is passed as an argument

cd [folder] - changes directory to supplied folder. Other arguments can be "~" (home folder of user running command) and ".." (move up one directory), both these must be entered without the quotes.

man [command] - will display the manual page for any command supplied that offers manual pages. Will offer in-depth explanation of every flag and argument possible with the supplied command.

rm [flags] [directory or filename] - Commonly used to delete files or folders. To delete a non-empty folder the -r (recursive) flag must be supplied.

su [username] - switches user to supplied username. If no username is supplied it will default to root.

sudo [command] - runs the supplied command as super user (sudo = super user do). This will require a password for an admin account, however, it will cache (store) the password for a short time after the first use. This cached password will not be available anywhere but the original terminal shell in which it was first supplied.

locate [term] - is used to locate files that contain the term supplied. Requires "sudo updatedb" to be run to update the locate database.

grep [term] - program that will search supplied input for term supplied (is often used with piped [see below for explanation] input)

cp [flag] [file] [destination] - copies specified file to destination (or directory if the -R (recursive) flag is supplied)

ln -s [original location] [symbolic link] - creates a symbolic link (such as a shortcut in windows) to files, folders, or programs.

echo [content] - used to echo content (enclosed within quotation marks) to the screen, can be diverted to a file using the ">>" characters and then the path to the file, including the file name. (e.g. echo "test123">>Desktop/test123.txt)

cat [filename] - used to output the content of the file to the terminal (again, can be diverted to a file or to the grep command using aforementioned methods).

mkdir [directory name] - Creates a new directory in the current folder, unless a full file path is supplied for the new directory.

pwd - Is a command that prints the working directory (e.g. if you run it in /home/username/ it will return /home/username/)

Programs are usually installed to either /bin/ or /usr/bin, and almost all programs offer manpages, allowing you to use any program you need to just by knowing ls and man. These commands should exist in all *nix environments (mac, linux, unix), however, there may be slight alterations to how they must be entered.


1. A pipe is the character "|" and is used to divert output of a previous command into yet another command (e.g. 'ls|grep "home"')

Sunday, August 3, 2008

Summer Update

I realize I haven't posted anything new for a while on here. The reason is that I've been on vacation (and still am) in Canada, where the fastest 'net speed I have regular access to is 28,8K, in other words, too slow for intense usage (especially because it's pretty expensive too). However, I have been working on some videos which I'll probably upload to youtube and link to in a blog post for others to view (one is for installing Arch and the basic config - without sound, and I'm working on another which shows how to install xorg, alsa, etc. and configure it properly - it will have sound when it's done).

I will be going back home in about a week, then I'll need to finish some school work, so it may be a few weeks before I get around to uploading the videos.

Have a great summer everyone,
Lswest

Sunday, June 1, 2008

Installing Bootloader How-to

I've noticed a lot of people asking about restoring Vista/XP bootloaders, and so I decided to write a how-to for this. Also, I will include a quick how-to on restoring GRUB as well.

For Vista:
Boot to your recovery cd/partition (if you don't have one, or lost yours, you can get a recovery CD from here note: the CD is ONLY recovery options, so no cheap way of getting Vista "This download is available to customers running genuine Microsoft Windows. Please click the Continue button to begin Windows validation. As described in our privacy statement, Microsoft will not use the information collected during validation to identify or contact you." part of the disclaimer for the multi-gigabyte download for the actual program used to create that disk. If you don't agree with it or don't have a genuine windows system, do not use this download.)
After booting to the CD, get to the Recovery Console (it differs for each recovery program, but generally is easily enough found). Once there type
bootrec /fixmbr
bootrec /fixboot
which will restore the Vista bootloader.

For XP:
boot to an XP CD (sorry, no links available :P) and, once the menu loads, hit "R" to enter a command prompt. Once there, choose which partition you want, and enter an admin password (if you have one set).
then type
fixmbr
fixboot
and the XP bootloader should be restored.

For GRUB restore to MBR:
boot to the LiveCD (this is the easiest way IMHO) and then start a terminal (applications-->accessories-->terminal)and type:
sudo grub
find /boot/grub/stage1
root (hd?,?)
setup (hd?)
quit

where the (hd?,?) and (hd?) corresponds to the output of find /boot/grub/stage1 (first time round the (hd?,?) stands for the drive (hd?) and the partition (,?) at which Ubuntu (or any Linux) is located, and then the second time round (hd?) just stands for the drive, for the MBR).
If you would like a more detailed explanation catlett did a good job with his how-to here and also offers troubleshooting ideas.

How to restore GRUB to a partition:
**DISCLAIMER** This is untested, as I haven't had time to do so yet, but it should work. Any feedback would be great, either by PM on UF or to have a reply posted here.
sudo grub
find /boot/grub/stage1
root (hd?,?)

setup (hd?,?)
quit
(for an explanation of the above code, see the info on restoring GRUB to the MBR, apart from the code marked in bold).
There is only one small variation for this (marked in bold) but it's a significant one. That "?" marked in red should be the same one you used for your "root" command in the line above. It will then install GRUB to that partition.

Now, you may ask, why is this on a Linux blog? Well this is for those people who either decide Ubuntu (or Linux in general) isn't for them, and wish to get back to Vista or XP, or else for those people (like me) who have set up a triple boot system. To set up a triple boot, I found, it works best if you install the XP bootloader (for XP), then the Vista Bootloader (on top) and then lastly, the GRUB which then allows the booting of all 3 systems. The problem I ran into was that i had Vista and Ubuntu installed, so I installed XP, then GRUB, and realized XP bootloader files (which are in the Partition and called the ntldr files) could not boot Vista. I ended up removing Vista then, but that's another story.

aliasing how-to

I came up with this solution of easily connecting to networks, and dispensed with a need for any network manager (well, for my home and school networks, otherwise I can just use the terminal to connect to new networks)

what I did:

opened .bashrc with
sudo nano ~/.bashrc
then at the end of the page I added the line:
alias [name of school]="sudo iwconfig essid [essid] key [key] && sudo dhclient wlan0"
so now all I have to do is enter either mis (name of my school) or "home" in the terminal, enter my password, and I connect to the network. I find it a lot more efficient and "fun" :P to do than connecting via the network manager.

also, on a side note:
I also added the line:
alias ls="ls -l --color=always --classify"
to .bashrc so that when I type "ls" it lists it in the long format, colour coded and with classifications. To make these system-wide aliases, add them to the file /etc/bashrc (requires reboot), or for the root user add these lines to /root/.bashrc

This is more one of those "fun to know" kinds of things.

*IMPORTANT* those commands require the quotes to be there, so add the alias lines with quotes around the command

Introduction

Well, I'm a Linux fanatic and this is my blog. I'll be posting useful how-tos, interesting infos, stories, and reviews on Linux systems that I use/test. Hopefully I'll update it regularly, but I've got exams coming up, and I may not be able to.

A bit about me:
I'm 17 years old, born March 25th, 1991.
I live in Germany and am Canadian/German.
I'm in a relationship with a great girl, and so, that may also be a reason why my updates may be slow in coming :P
I've used Linux since 2003, so about 5 years.
During my time using Linux I've installed Ubuntu, among others, but I always seem to end up at Ubuntu again either due to hardware drivers or other reasons. Planning on installing Arch on my laptop after I finish playing with it in a VM (use VirtualBox for all my virtualization). Of course, the results of that will show up here (eventually). I also help out at UbuntuForums using the name "lswest", so feel free to look me up if you're there too.

Also, this is what my Ubuntu system currently looks like: