fbpx
All Posts By

Rév O'Conner

[DEPRECATED] Automatic wallpaper downloader with WSL

Please note, that unsplash has made an app that let users download wallpapers directly off of their website. So this tutorial isn’t really useful any more unless you don’t want to install the app. 

I started using bash on windows (WSL) on my windows 10 PC, a while ago, but so far hasn’t found any real use for it in my work scenario, but that changed when I got the idea to write a script that downloads wallpapers from a remote site to my computer every 2 hours (an interval that I chose). It uses linux and windows together to achieve its goal, and its just beautiful what Microsoft did by adding Ubuntu to run natively on Windows 10.

Let me introduce a website with gorgeous photographs that serves as an amazing source of wallpapers, www.unsplash.com. Now what’s so amazing about this website? Well at source.unsplash.com you can get a get a single link to download different photographs every time you load it, and that is essential to creating a periodic downloader for wallpapers for your PC.

Let’s get started, shall we!

  1. Create a folder anywhere you want your wallpapers to be downloaded to. (Mine was a folder called wallpaper in the picture library). All the script files will be saved in this folder.
  2. [OPTIONAL] Go to https://source.unsplash.com/ and get the link that suits your need the best. You can get a link that downloads wallpaper for your screen resolution, or with different categories etc.
  3. Open notepad, or your favorite text editor
  4. Copy and paste the following code in there (if you have your own unique link for wallpapers, replace the link in the code with your own link)
    @echo off
    bash -c "wget -O "download.jpg" "https://source.unsplash.com/category/nature/1920x1080?""
    set /p name=<filevar.txt
    echo %name%
    ren download.jpg wallpaper_%name%.jpg
    set /A name+=1
    break>filevar.txt
    >filevar.txt echo %name%
     
  5. Save it as download.bat (Make sure you select “All files” in Save type as, when saving the file)
  6. Close this notepad and open a new one, and copy and paste the following code in there (this script makes the bat file run without opening a command prompt console window):
    Set oShell = CreateObject ("Wscript.Shell")
    Dim strArgs
    strArgs = "cmd /c download.bat"
    oShell.Run strArgs, 0, false
  7. Save it as run.vbs
  8. Open another notepad and type 1 in there and save as filevar.txt

  9. [OPTIONAL] Test the script by double clicking the run.vbs file. You won’t see anything pop up, but a photo will be downloaded as download.jpg in the folder, if you are connected to the internet, and renamed to wallpaper1.jpg
  10. Open Task Scheduler (If you don’t know how, press WindowsKey+R and then enter this without quotes “%SystemRoot%\system32\taskschd.msc” and hit enter)
  11. Create a new task
  12. In the general tab, set configure for: Windows 10
  13. In Trigger tab, add new and on Begin the task: At log oncheck Delay task for: 30 Minutes (so that it doesn’t start with boot and increase the boot time), check repeat task and enter your time interval at which you want the wallpapers to be downloaded. I have mine set at 2 hours for a duration of indefinitely. Then made sure Enabled is checked and hit okay.
  14. In the Actions tab, create new and set Action to Start a program. 
  15. In the Program/Script write %systemroot%\system32\wscript.exe or C:\Windows\System32\wscript.exe if you have windows installed in C drive and in the add arguments write //Nologo and then put a space and then the path to your run.vbs file. (To get the path of your run.vbs file, hold shift on your keyboard and right click on it. Then click copy as path from the context menu.) And in the start in, put the path to your folder where you are downloading the wallpapers. (You can simply paste the path of run.vbs and then remove the \run.vbs and the quotes from the box.)
  16. [OPTIONAL] In condition tab, uncheck Start the task only if the computer is on AC power. 
  17. In the settings tab, Check Allow task to be run on demandCheck Stop the task if it runs longer than and input a value of 2 minutes if you have relatively fast internet or 10 minutes if you have a slow one. And in the drop down box, select stop the existing instance. Press okay and you are done.

Ta-da now you have an automatic wallpaper downloader set to run in the background, all you have to do now is set that folder as your windows wallpaper slideshow folder, from the personalize setting.

Have a great day!

[3ds Max] Customizing Autodesk 3ds Max with new icons and colors

One day as I was going through my daily routine of modelling and animating stuff inside 3ds Max, it dawned on me, how boring the interface the looks. And I have always been a freak about customizing UI of the software I use. From making themes for my phone to making custom icon for Windows PC.

I created custom Icons for Max, changed the colors, added new keyboard shortcuts etc to give it a brand new look.

Here are some of the screenshots

Splash Screen
UI

If you like the theme and want it for yourself, follow these instructions:

Warning: For 3ds max 2017 SP2

  1.  Download my files and extract using 7zip or winrar
  2. For splash screen
    • Copy the dll file to your max installation folder (usually at %programfiles%\Autodesk\3ds max 2017).
    • Optional backup: rename 3dsmax.branding.dll to 3dsmax.branding.old.dll
    •  Replace upon prompt when copying.
    •  Enjoy the beautiful splash screen next time you open it.
  3. For UI Icons
    •  Copy the three folders, Command Panel, MainToolbar and SnapsControls to C:\Program Files\Autodesk\3ds Max 2017\UI_ln\Icons\Dark (if you have max installed in the current location)
    • . Restart 3dsmax
  4. For UI Colors and Enhanced Menu
    • Copy the contents of the folder “For new UI” (not the folder itself) to C:\Program Files\Autodesk\3ds Max 2017\en-US\UI
    • Replace Files (Backup first)
    • Restart Max.

[AHK] [WSL] MD5 hash of a selected file with a key press

INFO: Script Requires Bash on Windows 10, also known as windows subsystem on linux (WSL).

If you use Autohotkey to make your own macros and do super awesome stuff with the push of a key, like I do, you may find this useful, specially if you download from the internet a lot, or transfer files over wireless network. You may need to compare the MD5 hash of files to check the integrity of transfer. Here is a quick code I wrote in Autohotkey script to get the MD5 hash of a file that you have selected in windows explorer.

Without further adieu, let me show the script to you.

Backspace::

;Get MD5SUM using WSL of selected file

var1 := % Explorer_GetSelection() ;stores the file path

Explorer_GetSelection(hwnd=””) { ;Script to get the path of the selected file >>>> START <<<<

    hwnd := hwnd ? hwnd : WinExist(“A”)

    WinGetClass classahk_id %hwnd%

    if (class=“CabinetWClass” or class=“ExploreWClass” or class=“Progman”)

        for window in ComObjCreate(“Shell.Application”).Windows

            if (window.hwnd==hwnd)

    sel := window.Document.SelectedItems

    for item in sel

    ToReturn .= item.path “`n”

    return Trim(ToReturn,“`n”)

;Script to get the path of the selected file >>>> END <<<<

StringReplace, var2, var1, \, /, all ;Replace \ with /

StringReplace, var3, var2, :, , all  ;Remove the colon from the address

RegExMatch(var3, “^[A-Z]”, Var4) ;Storing Drive letter to another variable

StringLower, Var4, Var4 ;changing drive letter to lowercase

StringTrimLeft, VarString1, Var3, 1 ;Removing the capital drive letter from the path

VarStringFinal = /mnt/%Var4%%VarString1% ;Joining together all the part of the path to be converted to a linux path

code =

(@echo off

bash -c “md5sum ‘%VarStringFinal%'”

)

run %comspec% /k %code%

return

The script is pretty self explanatory with the comments making it easier to understand. I have the Macro assigned to backspace key on a separate keyboard but you can assign it to any key you want. How I assigned it to a separate keyboard is a post for another day.

Why so many variables you may ask, because you need to change the file path to linux’s file path in WSL for the md5sum to work. Let’s say you have a file called file.txt in C drive, you will need it to be /mnt/c/file.txt in WSL. I used a lot of variables and I am sure a professional coder can make it much shorter.

This is how the end result looks like, see the selected file in the file explorer in the background.

In the end what you have is basically a bash script running inside a batch script running inside an autohotkey script. Scriptception!!

[3ds Max] Recover your work from animation error after skinning

Hello everyone! I ran into a problem the other day with exporting a mesh that I had skinned in 3ds Max. I hand painted the vertex weight and animated it, only to find errors during export. I was in a bad state at that point as it had taken me hours of work to hand paint the vertex weights during skinning process and I was in no mood to  have to go through it all, just because I missed to reset xform on the mesh and scaled the bones a bit to fit the mesh.

I was frantically searching for a solution on the web to no avail until I saw a tool called skin utlities. It hardly had a lot of documentation work for it but it was a life saver, and got my project working with just a few simple clicks.

So I decided to make a tutorial for anyone who might be in a fix as I was and looking for a solution. I realise I sound a  bit weird after listening to it and that it might be somewhat hard for people to understand what I am saying but the tutorial is pretty clear with whats going on in the screen so it all should be fine.And like an irresponsible child, I am going to put the blame for this on a severe toothache I was suffering from at the moment.

Here’s the video, take a look:

Hardware color calibrate your monitor without a colorimeter

So why do you need color calibration? Ever bought a monitor and the color seems a bit off? All monitor which aren’t factory calibrated will have a slight variation of color from real world colors, so white may appear as greenish or reddish, some colors may be washed out or darkened etc. If you are a photo editor who must produce color accurate results, you are recommended to get a colorimeter. They are specialised hardware which color calibrates your monitor. You can buy one from Amazon or maybe you can ask one of your local photo studio to rent it for a while. 

However if you are a gamer, and animator like me and you just wanna see the colors as they were supposed to be without the need to be 100% accurate, you can save some money and try your hand at this method instead.

Before you proceed with this, let me tell you that it still may not be 100% accurate but at least it will be better than most software solutions out there, if you wanna save a few bucks. Software solutions are limited by perception of your eye, this method isn’t.

Stuff you will need:

  1. A software which can pick color from an image’s pixel and display it’s RGB and LAB color value.
    Photoshop can do that. You can download photoshop’s trial.
  2. A good quality camera. A DSLR works best, but any camera which can shoot color accurate photos will do. Your budget smartphone camera won’t work.
  3. A lamp with white LED.
  4. A white thin paper to diffuse the LED lamp. You can read this article for a complete guide on how to diffuse light using household object.
  5. Basic knowledge of Photoshop.

Here are the steps:

  1. Let’s start by creating a diffused white light solution using a paper (or a white tshirt) and a white LED lamp. Place the lamp parallel to and beside your monitor, and point it in the same direction of your screen. 
  2. Open photoshop, create a new document with white as the background color. 
  3. Make the document full screen and zoom in so that the whole white covers the screen. 
  4. With the on screen control of your monitor, increase the brightness to the max. 
  5. Switch on your camera, go to setting, turn down your ISO to the lowest value, make sure hue/tone is set to auto (or neutral), and EV is set to 0. 
  6. Turn off all the lights in the room, if you have backlit keyboard, RGB mouse, etc cover it with something. 
  7. Point at the screen so that your lens is at the center, and now go back so that the lamp is in the frame too. (We added the lamp as a guide for the camera to not adjust to the tint of the monitor and display the color accurately. Some camera might adjust the to the light and change its own settings to make it appear white).

    I used my second monitor (not calibrated) as a reference instead of the lamp


  8. Click a few pictures (we will pick the best one out later) 
  9. Transfer these photos to your pc. 
  10. Drag and drop the best looking image to your photoshop document (you can turn off full screen now). 
  11. Pick your foreground color, from the center of the screen.

     

  12. Take a note of the values.
  13. Reverse the sign of the a and b values of the LAB color. (Like in the picture above, -1 will turn to 1, and 8 will turn to -8).
  14. Now write down the values of the RGB color values.
  15. You need to do some basic math now to get the value your of your monitor’s color correction settings. First step would be to look at the default values of the RGB setting of your monitor’s on screen control. Some companies like BenQ have their values at 100 while other like Samsung have that at 50.
  16. Use this formula for each other the red, green and blue (RGB) to get the values your monitor needs to be set at
    Color value of monitor = (color value of Photoshop/255) X default value of monitor’s color
    Something like
    R = 184/255*50
    G=187/255*50
    B=202/255*50
    for a samsung monitor displaying the values of the picture above.
  17. Enter these values on your monitor’s setting. (NOTE: While doing this, you may feel like the color on your screen isn’t what it should be. Change the values anyway. This is likely the effect of your eyes adapting to the tint of the monitor that was present before. Now go away from your monitor for a while, about 20-30minutes and don’t look at any digital screen in the meantime. When you come back, your screen will look natural)
  18. Now open your windows inbuilt calibration tool to set your gamma, brightness and contrast and you are good to go. You can open it by searching for Calibrate display color. 
    Note: click next on the page where it display sliders to correct color, without touching the sliders itself.

Road Trip to Mukutmanipur

We took a trip to Mukutmanipur, in the state of Bengal, India and by the seven Gods, it was by far the best place I have driven to, in  my life. It’s absolutely mesmerizing, this place and a driver’s heaven. A partially restricted road (in the sense that you have to take permission to drive on it and you are allotted a fixed amount of time to stay on) stretches to 3 kms or maybe more, and is absolutely empty save for a few bicycles or motorbikes here and there. I topped out my engines on that road.

Where does it end?

We started pretty early in the day (or shall i say night) at 2 AM. Taking a friend with me who lives in the neighborhood and from there we went to pick up a friend who lives about 17 kms away. It was 15th of February and we were trying to have some fun after the sullen mood of being single on valentine’s day.

The weather was pleasant that night, with cool winds blowing at our faces. We took a break from the drive to drink tea on the Belgharia expressway (part of the Asian Highway – 1) while on the way to Sam’s house. Starting from there I realised we were running low on fuel. We planned to refill on the way, but as fate would have it, all the gas stations were closed. When I picked up Sam, the fuel gauge needle was almost touching the Empty scale. We opened google map to check for any nearby gas station but none of them were open at the time. We did find an open one on the map, good thing, it was on our way, but the bad thing, it was almost 30kms away. That meant, I had to drive at a sweet pace so as to conserve fuel as much as possible. Fortunately a few days earlier, I had watched a video where they showed that a car engine is most fuel efficient when running at 40-60 kmps, and that’s the route I took. In the end we did manage to reach the gas station and filled the tank to the brim.

At around 6 am, we stopped for breakfast. By this time, the distant landscape on the side of the road was covered in a thin blanket of fog and it was 10 degrees outside with a chilling wind blowing. We sat down for a cup of tea and since the shop owners hadn’t made anything yet, we ate some leftover fries from last night, it was not the best thing I have tasted but it was enough for us hungry souls.

When we started from there, in fifteen minute or so, some gunk started appearing on my windshield. It took me a while to recognize that it was bug splatter. But i continued on thinking the wiper will take care of it. And I have never been so wrong before, apparently we were crossing a horde of migrating bugs if you can call it that and it hit us bad. In a matter of seconds, there were thousands of bugs on my windscreen reducing visibility to almost nil. I parked my car on the side of the road and got out to clean it with water and a towel. I wasn’t ready for what sight beheld itself. The whole front of my car, and anything that faced forward was smeared in green layer of bug carcass and it was stinking of death, literally. I braved myself to clean it all up, using up to two towels in the process and a big bottle of water we had bought to drink on the way. However that was the last of the bug.

Not my car but it did look similar.

The rest of the journey was very pleasant, with Sam’s joke making us laugh every minute of it. The road became empty as we approached a forest, called the elephant corridor. My friends say they saw an elephant deep in the forest but I don’t believe them.

We reached our destination at around 11am. There was a short bridge over an abandoned dam which connected two banks of the Kansabati river. Near the bank of it, was a park under construction. We were quite disappointed at what we saw. There was nothing to do other than stare at an almost dry river with a rocky bank. If only there was a way to climb down on those rocks. Near the park there was an unpaved path, I decided to follow it and see where it led to. We walked for what seemed like an eternity, and it was beautiful to look at as we progressed further. The path was cut out in between a hill with both sides towering above us and covered in thick cobwebs. A canopy of green trees played hide and seek with the sun as we walked by until we reached an abrupt end what seemed like a cliff. But as Sam pointed out, we could climb down to the rocks from there. Any sane person at that point would have just turned back and walked to the car, but we are not exactly sane. We climbed down an almost vertical wall of rocks all the while thinking how difficult it will be to climb back up, onto a bed of sharp uneven ground of eroded bare rocks, sticking out in a diagonal way. It was tough to even stand properly on those ground let alone walk and the thorny vegetation poking out from the ground hindered us from using all four to navigate. However we did manage to walk around with difficulty and it was absolutely amazing to just sit on the rocks and enjoy the cool wind. Here are some pics.

The path we took with trees towering above us
Other side of the bank
Sam running around in his flip flops. It’s crazy to think of!
Trying to get that perfect shot while trying not to fall to my death
Was it candid? Probably not!

We drove further from there, after resting a bit and washing ourselves, only to have to come back to take permission to be able to continue to do so. It took us around quarter of an hour to get the permission and we were on our way to one of the most beautiful places I have ever driven on.

That mirage at the end

Driving on, the ground to our left started giving way to a lake with water meeting the sky in the horizon.

An unending lake on one side of the road

We stopped for a while to enjoy the beauty of the crystal clear lake water. We wanted to take a bath but weren’t prepared with towels or anything of that sort. Maybe next time!

Slowly being eaten by water
Sometimes you just need to open your shoes and wash your feet in a cold lake
Photo of the lake taken from a small park by the side of the road for its elevated position

There was a small park nearby, a little elevated ground, turned into a place to sit and relax (unfortunately it never occurred to us to take a photo of it). I climbed on top to take these beautiful shots of the road stretching to and along the horizon along the bank of an unending lake.

The wider shot
Hills on the other side
A snap of the other side of the road

By the time we were done here, it was 4 pm and we were hungry as it gets. We filled our empty stomach with loads of rice and fish in a local dhaba and was on our way home.

All photos are taken by Google Pixel™
Edited by Disha Shur

The Bridge

I come here often. The rusted and decaying mass of metal that once was a bridge, connecting the two separated land, gives me a sense of comfort and serenity. The drowning sun was covered with a blanket of gray cloud. I stood on the edge with a cigarette in hand that once in a while touched my lips. The smoke traced its path in the rain that was reduced to a sprinkle, disappearing in the strong wind.



I looked down, the current was strong. The darkness of the dusk combined with the height made it nothing short of an abyss. As the rain continued to form wet layers against my face, my peripheral vision saw a dark figure approaching me. The drug abuse over the year has made me to hallucinate at times. I tend to ignore these ghostly images but as it neared me, I saw it was a girl. She didn’t see me probably because it was dark though she seemed lost of her surroundings. She walked as in a delirium and came to stop at the edge not far from me. I slowly approached her, out of fear, for both me and her. She was almost my age; slender and tall. It’s when she took notice of me. Her eyes were blue and mesmerizing yet the ocean seemed to be overflowing with grief. The face beautiful as the wind veiled it with her curls. It took her a while to take notice of me and when it sunk to her that I was another human, she hurriedly tried to climb the ledge all the time looking at me with a deep hatred in her eyes. I knew what she was trying to do. I said softly, “I won’t stop you” as I took in the killer smoke.



She eased a bit, a faint smile crossed her lips and those blue eyes locked my gaze. She mouthed “thank you” and plunged into the black water below. The now howling wind masked the sound of the ending fall.



I knew that she deserved to die in peace. I don’t go on that bridge now. The unknown sorrow of the unnamed girl haunts me there. That is no more the place of my peace.

The Lost Marble

Acrid air crept into my lungs, turning my stomach, but somehow I managed to keep the food inside. I didn’t move. Soon, I was going to die, that was certain. He was young, almost my age, slightly taller. He looked at me, analyzing my every move. But in his movement he also expected something from me, and I didn’t understand what. He raised his knife and slowly put it to my chest. I didn’t retreat, speak, or show fear. It seemed to surprise him “You’re quiet.” – It wasn’t a question.



She didn’t dance as I wanted. She hasn’t backed away, neither cried, nor even begged for her life. I couldn’t understand why. Everyone prayed, begged on their knees. She looked at me with her green eyes, staring into my soul. It was disturbing, even painful for me. I clutched her hands against her body pressing it harder as I stepped toward her, but she remained standing in the same place, calm and serene. I haven’t felt the pleasure that I’d normally experience when confiscating their last breath. The sweet ecstasy covered me when I heard the desperate screams and I felt the power of destroyer in my vein. In their last desperate fight, they’d plunge their nails into my skin as I hammered the knife blade into their womb. And now, she stood there, looking at me blankly, almost without emotion, it was frustrating. “Why!” – I growled. My hands quiver as I waited for an answer. I didn’t like this change, not at all. I don’t kill out of anger. I want to satisfy my growing desire, of power, something that I was deprived of as a child. If she doesn’t satisfy my urge now, then more people will lose their lives.



“You think I’m not afraid?” – I whispered to malodorous air. Earth beneath my feet was cold and stale odor that spread throughout the small alley. We were surrounded by rusted metal and decaying walls of something that might have been called home in past. The reason I haven’t shown what I felt, I hated emotions. I have been hurt so many times, it numbed me. Life was too complicated for me, I wanted to end the pain. I longed for it. For emptiness, for death. And look again, fear, you have no place in the heart of someone who desires the gift of mortality. The feeling reminded me of the smell of poppies and iron. ” I am scared, terrified. But I know that your knife offers salvation. If you drive it in me now, I’ll never have to feel again. I want it. I yearn for it. “- I sighed wearily before I continued. I felt his grip loosen. Sweat dripped from both our skin even in the frigid cold. “The desire … another feeling. But I’m able to endure it if I get what I want. “- Permanent hiatus, I hoped.



I watched her lips while she was telling her last thoughts. It was so sensual when they uttered the words. But it was different for her, it distracted me from my aim. It made me weak and I hated it. In the rage I pushed her body up against the wall and pressed the knife to her stomach. She didn’t exclaim, and kept looking at me, staring with those eyes. Icy sweat enveloped. We both saw death as the only way out. I breathed on her neck and watched the tingling on her skin. The beast in me growled, struggled and wanted to taste her blood. She suddenly took the knife and pressed it harder. “Take it!” – She whispered in my ear. And the whole world stopped. I lost the desire as something new, something unknown enveloped me. Roughly, I grabbed her neck and pulled her close taking her further, in the dark alley.



I don’t know what made me stand up and force my legs to take my weight on the snowy night. The street was empty, just the night lamp gave away my presence. His ferocious growl filled the alley. We moved together closely, almost dancing in the pathway. I felt the warm blood on my feet as it dripped down. I savored the moment.



I saw her as she moved about in the cold wind. My hands were covered in blood; I could smell it now. Her grip on the knife tightened even more and I kept clutching her now cold hands. In my life I have grabbed the hands of many women, but I felt it for the first time today. We shared the joyous moment together. I buried my face in long hair, it smelled of fruits and orchard, the purity of nature.



Blankness, it has finally arrived. He was opening his mouth and looked at me with those big dark eyes, but I did not understand anything. My senses were blurring now. I didn’t see him. I’ve just … watched. Everyone can look, but not see. Finally, I understood. I smiled. He looked at me puzzled, and then he smiled. He had a nice smile. I didn’t have the strength to keep my eyes open. Slowly, I closed them, but the young man didn’t want to leave me at peace. He shook me. Then he did something I would have never expected. He hugged me, tightly. This kind of hugs would only be shared between people who had known each other for a long time. As if we were lovers. I somehow managed to put my arms around him. Hot tears poured down my cheek and blackness enveloped me. I sank into beloved void as the sounds of a distant cry filled me.



I watched her grow fainter by the second. The thought sunk into me. I have always been alone but this time I felt lonely. I kept saying “Don’t go”. She’d leave me now. I panicked at the thought. Her eyes were closing. I shook her up. I wanted to relive the moment without the blood. It was too late now and in a desperate attempt to feel her I did the impossible, I hugged her. And memories came back of the lonely child whose bruised eye wept tears only to be stopped by the mother’s embrace. The sweet love. It wasn’t ecstasy, it was more. And as her heart stopped, I cried and screamed. I was tired and lost. I took the knife and plunged it into my heart. The pain was overwhelming as I knew I neared her once more. Finally, somewhere in death I found love.

by Rév O’Conner and Karolina Škaljin