Hello, World!

~ No Day But Today ~

2 weeks into GSoC
I had a feeling in the community bonding period that something will mess up at the start of the coding period as I had the toughest part lined at the start. The same did happen… At the start, I had two weeks for porting reproject from Astropy. In short what it does is, it align two different astronomical images into a single frame of reference. While capturing an astronomical image, different conditions(like the position of the sky) affects the image captured. Thus, two images of the same region of interest will not be exactly similar when taken under different conditions. It may require to rotate, translate or interpolate them to get the result. So where the difficulty arises for me? Astropy is a very mature library but support for Astronomy in Julia is still growing. This means that I can’t port line by line, I need to be creative. Plus the utility functions which the python version of reproject calls was not present in Julia. So at a basic level, it meant I had to port every other function in Julia or get a workaround using the existing things. So a project part which seemed within bounds at the beginning started growing exponentially and I haven’t planned this.......
Community Bonding Period: JuliaAstro
Why this Community Bonding Period(CBP)? According to Google, “The community bonding period is when you work out further details of your project plan, schedule regular upcoming meetings with your mentor, get your development environment set up and start to engage with the project’s open source community. This is the time to work with your mentor on setting expectations for your interactions and how your progress is measured during the GSoC program. Hopefully, you have already participated in many discussions with your mentor, clarifying the project and expectations during the application period, but now is the time to finalize your plans.” How this period went for me? It really fulfilled everything it was supposed to. Hats off to Google for this initiative of adding an extra month in the timeline. So, In my whole project, I had most of the things figured out, like what will go in, what will go out, how will it be structured and implemented. Despite this, it follows a big BUT… But a very crucial and challenging task is to port reproject from astropy. It’s like the most important feature of the project and requires some complex work like understanding the python version and figuring out a Julian way to write it.......
WCS.jl Package Analysis
Why WCS.jl package After the introduction of package FITSIO.jl for handling FITS files in Julia, another package was required to manage the World Coordinate System(WCS) transformations of a FITS object. The WCS info. is present in the header of one of the HDU(s) of a FITS file. These transformations map the pixel locations in an image to their real-world units, such as their position on the sky sphere. These transformations can work both forward (from pixel to sky) and backward (from sky to pixel). This package wraps the WCSLIB C library. Installation WCS.jl is a registered package in Julia and can be installed from package manager as: pkg> add WCS or it can be build from source as: julia> Pkg.clone("https://github.com/JuliaAstro/WCS.jl") Usage After installing the package, you can start using it with julia> using WCS Creating a WCS object WCS objects are defined by a type WCSTransform which contains the following fields based on the information present in the header: flag::Cint naxis::Cint crpix::Ptr{Cdouble} pc::Ptr{Cdouble} cdelt::Ptr{Cdouble} crval::Ptr{Cdouble} cunit::Ptr{Cvoid} ctype::Ptr{Cvoid} lonpole::Cdouble latpole::Cdouble restfrq::Cdouble restwav::Cdouble npv::Cint npvmax::Cint pv::Ptr{PVCard} nps::Cint npsmax::Cint ps::Ptr{PSCard} cd::Ptr{Cdouble} crota::Ptr{Cdouble} altlin::Cint velref::Cint alt::NTuple{4, UInt8} colnum::Cint colax::Ptr{Cint} cname::Ptr{Cvoid} crder::Ptr{Cdouble} csyer::Ptr{Cdouble} czphs::Ptr{Cdouble} cperi::Ptr{Cdouble} wcsname::NTuple{72, UInt8} timesys::NTuple{72, UInt8} trefpos::NTuple{72, UInt8} trefdir::NTuple{72, UInt8} plephem::NTuple{72, UInt8} timeunit::NTuple{72, UInt8} dateref::NTuple{72, UInt8} mjdref::NTuple{2, Cdouble} timeoffs::Cdouble dateobs::NTuple{72, UInt8} datebeg::NTuple{72, UInt8} dateavg::NTuple{72, UInt8} dateend::NTuple{72, UInt8} mjdobs::Cdouble mjdbeg::Cdouble mjdavg::Cdouble mjdend::Cdouble jepoch::Cdouble bepoch::Cdouble tstart::Cdouble tstop::Cdouble xposure::Cdouble telapse::Cdouble timsyer::Cdouble timrder::Cdouble timedel::Cdouble timepixr::Cdouble obsgeo::NTuple{6, Cdouble} obsorbit::NTuple{72, UInt8} radesys::NTuple{72, UInt8} equinox::Cdouble specsys::NTuple{72, UInt8} ssysobs::NTuple{72, UInt8} velosys::Cdouble zsource::Cdouble ssyssrc::NTuple{72, UInt8} velangl::Cdouble ntab::Cint nwtb::Cint tab::Ptr{Cvoid} # Ptr{tabprm} wtb::Ptr{Cvoid} # Ptr{wtbarr} lngtyp::NTuple{8, UInt8} lattyp::NTuple{8, UInt8} lng::Cint lat::Cint spec::Cint cubeface::Cint types::Ptr{Cint} lin::linprm cel::celprm spc::spcprm err::Ptr{WCSErr} m_flag::Cint m_naxis::Cint m_crpix::Ptr{Cdouble} m_pc::Ptr{Cdouble} m_cdelt::Ptr{Cdouble} m_crval::Ptr{Cdouble} m_cunit::Ptr{Cvoid} m_ctype::Ptr{Cvoid} m_pv::Ptr{PVCard} m_ps::Ptr{PSCard} m_cd::Ptr{Cdouble} m_crota::Ptr{Cdouble} m_colax::Ptr{Cint} m_cname::Ptr{Cvoid} m_crder::Ptr{Cdouble} m_csyer::Ptr{Cdouble} m_czphs::Ptr{Cdouble} m_cperi::Ptr{Cdouble} m_tab::Ptr{Cvoid} # Ptr{tabprm} m_wtb::Ptr{Cvoid} # Ptr{wtbarr} Creating from scratch To create a WCSTransform from scratch, we can use the constructor like:......
What Coala Organization taught me: Reaching beyond the beginners threshold
So, you have finally convinced yourself to enter the realm of Open Source Development. But wait, the initial threshold of getting to speed in this domain is feeling too difficult for you. You are struggling to do your very first contribution in a big Open-Source repository. The huge code-base is too overwhelming and difficult to understand. The issues marked as simple are also too difficult to comprehend. There are just too many things you still don’t know. The list of things you are seeing for the first time is growing day by day. It seems it’s a bad choice after all? So my dear open-sorcerer, have some hope. This feeling is mutual with at-least 60% of the people out there. It always starts with a bumpy road but if you can cross that part, believe me, the road ahead is smoother than you can imagine. I started with OSS on 15th Sept with zero knowledge of this domain, I just knew some of the features of GitHub GUI. My first PR was to NLTK on 22nd Sept and for that whole week, I was struggling to just get my first PR in. The issue tracker and the vast code-base to work on was not intuitive enough to get past that threshold.......
GSoC Initilization: The results day
It dosen’t seems possible until it’s done!! The day 6th of March 2019 will always be remembered when dreams actually came true. We were having our end semester exams and results were going to be displayed at 11:30 PM according to our time-zone. We had the last exam tomorrow at 4 pm and the pressure of GSoC was intense. I came to my hostel dorm after finishing the 4 pm exam that day and I had to study for the last one. I have submitted two proposals for GSoC, one for JuliaText in JuliaLang and other to JuliaAstro in OpenAstronomy. I have worked equally for both of them, maybe a bit more for JuliaText’s NLP one. I had an assurance that one of them might get in as I gave my all for them. Strict personal deadlines, iteration of thoughts and planning the best possible ways to strengthen my proposal. So, I started studying for the last exam around 7-8pm and at the start, I wasn’t feeling the pressure of GSoC that much. And as time passed, minutes seemed like hours and the panic grew stronger. I just couldn’t wait till 11:30 PM. So, I was in a state where I couldn’t focus enough to let that thought go away and study for the last exam.......